numpy.ravel()/numpy.flatten()/numpy.squeeze()
numpy.ravel(a, order='C')
Return a flattened array
numpy.chararray.flatten(order='C')
Return a copy of the array collapsed into one dimension
numpy.squeeze(a, axis=None)
Remove single-dimensional entries from the shape of an array.
相同点: 将多维数组 降为 一维数组
不同点:
ravel() 返回的是视图(view),意味着改变元素的值会影响原始数组元素的值;
flatten() 返回的是拷贝,意味着改变元素的值不会影响原始数组;
squeeze()返回的是视图(view),仅仅是将shape中dimension为1的维度去掉;
ravel()示例:
- import matplotlib.pyplot as plt
- import numpy as np
- def log_type(name,arr):
- print("数组{}的大小:{}".format(name,arr.size))
- print("数组{}的维度:{}".format(name,arr.shape))
- print("数组{}的维度:{}".format(name,arr.ndim))
- print("数组{}元素的数据类型:{}".format(name,arr.dtype))
- #print("数组:{}".format(arr.data))
- a = np.floor(10*np.random.random((3,4)))
- print(a)
- log_type('a',a)
- a1 = a.ravel()
- print("a1:{}".format(a1))
- log_type('a1',a1)
- a1[2] = 100
- print(a)
- log_type('a',a)
flatten()示例
- import matplotlib.pyplot as plt
- import numpy as np
- def log_type(name,arr):
- print("数组{}的大小:{}".format(name,arr.size))
- print("数组{}的维度:{}".format(name,arr.shape))
- print("数组{}的维度:{}".format(name,arr.ndim))
- print("数组{}元素的数据类型:{}".format(name,arr.dtype))
- #print("数组:{}".format(arr.data))
- a = np.floor(10*np.random.random((3,4)))
- print(a)
- log_type('a',a)
- a1 = a.flatten()
- print("修改前a1:{}".format(a1))
- log_type('a1',a1)
- a1[2] = 100
- print("修改后a1:{}".format(a1))
- print("a:{}".format(a))
- log_type('a',a)
squeeze()示例:
1. 没有single-dimensional entries的情况
- import matplotlib.pyplot as plt
- import numpy as np
- def log_type(name,arr):
- print("数组{}的大小:{}".format(name,arr.size))
- print("数组{}的维度:{}".format(name,arr.shape))
- print("数组{}的维度:{}".format(name,arr.ndim))
- print("数组{}元素的数据类型:{}".format(name,arr.dtype))
- #print("数组:{}".format(arr.data))
- a = np.floor(10*np.random.random((3,4)))
- print(a)
- log_type('a',a)
- a1 = a.squeeze()
- print("修改前a1:{}".format(a1))
- log_type('a1',a1)
- a1[2] = 100
- print("修改后a1:{}".format(a1))
- print("a:{}".format(a))
- log_type('a',a)
从结果中可以看到,当没有single-dimensional entries时,squeeze()返回额数组对象是一个view,而不是copy。
2. 有single-dimentional entries 的情况
- import matplotlib.pyplot as plt
- import numpy as np
- def log_type(name,arr):
- print("数组{}的大小:{}".format(name,arr.size))
- print("数组{}的维度:{}".format(name,arr.shape))
- print("数组{}的维度:{}".format(name,arr.ndim))
- print("数组{}元素的数据类型:{}".format(name,arr.dtype))
- #print("数组:{}".format(arr.data))
- a = np.floor(10*np.random.random((1,3,4)))
- print(a)
- log_type('a',a)
- a1 = a.squeeze()
- print("修改前a1:{}".format(a1))
- log_type('a1',a1)
- a1[2] = 100
- print("修改后a1:{}".format(a1))
- print("a:{}".format(a))
- log_type('a',a)
numpy.ravel()/numpy.flatten()/numpy.squeeze()的更多相关文章
- 学习笔记27—python中numpy.ravel() 和 flatten()函数
简介 首先声明两者所要实现的功能是一致的(将多维数组降位一维).这点从两个单词的意也可以看出来,ravel(散开,解开),flatten(变平).两者的区别在于返回拷贝(copy)还是返回视图(vie ...
- numpy.ravel() vs numpy.flatten()
首先声明两者所要实现的功能是一致的(将多维数组降为一维),两者的区别在于返回拷贝(copy)还是返回视图(view),numpy.flatten()返回一份拷贝,对拷贝所做的修改不会影响(reflec ...
- numpy的ravel()和flatten()函数
相同点: 两者所要实现的功能是一致的(将多维数组降位一维).这点从两个单词的意也可以看出来,ravel(散开,解开),flatten(变平). In [14]: x=np.array([[1,2],[ ...
- Python的 numpy中 numpy.ravel() 和numpy.flatten()的区别和使用
两者所要实现的功能是一致的(将多维数组降为一维), 两者的区别在于返回拷贝(copy)还是返回视图(view),numpy.flatten() 返回一份拷贝,对拷贝所做的修改不会影响(reflects ...
- numpy.ravel() 与 numpy.flatten()
两者都可实现将多维数组降位一维的功能 numpy.flatten()返回拷贝,对拷贝所做的修改不会影响原始矩阵 numpy.ravel()返回视图,会影响原始矩阵 1)ravel() In [16]: ...
- Numpy中的flatten是按照什么方式进行工作。
a = [[[1,2],[3,4]],[[5,6],[7,8]]] a = np.ndarray(a) array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]]) type ...
- 【numpy】新版本中numpy(numpy>1.17.0)中的random模块
numpy是Python中经常要使用的一个库,而其中的random模块经常用来生成一些数组,本文接下来将介绍numpy中random模块的一些使用方法. 首先查看numpy的版本: import nu ...
- Numpy中扁平化函数ravel()和flatten()的区别
在Numpy中经常使用到的操作由扁平化操作,Numpy提供了两个函数进行此操作,他们的功能相同,但在内存上有很大的不同. 先来看这两个函数的使用: from numpy import * a = ar ...
- numpy下的flatten()函数用法
flatten是numpy.ndarray.flatten的一个函数,其官方文档是这样描述的: ndarray.flatten(order='C') Return a copy of the arra ...
随机推荐
- SQL Server 更新 触发器
- 复制代码 代码如下: create trigger TR_MasterTable_Update on MasterTable after update as if update ([Type])- ...
- asp.net core 系列之允许跨越访问(Enable Cross-Origin Requests:CORS)
这篇文章介绍如何允许跨域访问 浏览器安全不允许不同域名的网页之间发送请求.这种限制叫做同源策略(the same-origin policy). 同源策略可以防止一个恶意的站点读取另一个站点的敏感数据 ...
- cpu gpu数据同步
https://developer.apple.com/documentation/metal/advanced_command_setup/cpu_and_gpu_synchronization d ...
- promise对象解决回调地狱
先放一张图片感受一下回调地狱 看起来是真的很让人头痛的东西 而现在我这里使用promise对象来解决回调地狱 采用链式的 then,可以指定一组按照次序调用的回调函数. 这时,前一个 then 里的一 ...
- python 字典的KeyError处理方法
先看一段代码: user = dict(name="brainliao", age=32) print(user["sex"]) 运行结果如下: user这个字 ...
- vConsole
说明 由于移动端项目在手机中调试时不能使用chrome的控制台,而vconsole是对pc端console的改写 使用方法 使用 npm 安装: npm install vconsole 使用webp ...
- Struct2-使用随笔
提要:最近写了一个2-3各页面的使用Struts2的Demo,在这里做下总结,都已经3年多没做J2EE了,有些感觉都快找不到了. 目录 1.必备开发工具 2.必备jar包 3.了解知识点 4.遇到的问 ...
- CentOS 6.4 编译安装 gcc 4.8.1(转)
今天在isocpp上看到“GCC 4.8.1 released, C++11 feature complete”这个消息,非常兴奋.终于有一个全面支持C++11语言特性的编译器了! 当然了,gcc仅仅 ...
- STL源码剖析(仿函数/bind2nd)
仿函数(functors)其实就是重载了operator()的对象. 下面简单先看看它的一个例子: #include <iostream> using namespace std; tem ...
- 【PPT】PPT倒计时动画的制作方法 5.4.3.2.1...
制作步骤: 1.输入数字 在PPT空白页面中插入横排文本框,输入数字54321,并修改数字字体和大小. 2.修改数字的间距,让数字重叠在一起 字体间距 - 其他间距 - 紧缩 - 输入 150 3.选 ...