numpy.ravel()/numpy.flatten()/numpy.squeeze()
2024-08-27 11:08:37
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)
最新文章
- 【Python】引用计数
- Kali信息收集系列:(都是我以前的笔记整理了一下,就没加水印,习惯就好)
- linux内核追踪——find_next_bit函数详详详解
- 每天一个linux命令--su
- ubuntu14.04安装dropbox
- Solve error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2'
- Spring中Bean的配置:基于XML文件的方式
- Gym 100285G Cipher Message 3
- asp.net MVC日志插件Log4Net学习笔记一:保存日志到本地
- js获取当前url地址及参数
- EffectiveC#15--使用using和try/finally来做资源清理
- Django URL 命名空间
- hdu4362 dp + 单调队列优化
- Java注解处理器--编译时处理的注解
- Python爬虫入门教程 59-100 python爬虫高级技术之验证码篇5-极验证识别技术之二
- 在aspx中,如果要引用一个ID号,需要引用外层的ID号(内层的不行)
- Docker 常用命令(一)
- ABP框架系列之四十二:(Object-To-Object-Mapping-对象映射)
- 什么是Java优先级队列(Priority Queue)?
- Find the location of libmysqlclient.so.X file in Linux environments
热门文章
- matlab的输出流控制
- IntelliJ IDEA maven项目的基础配置
- Chrome 控制台新玩法-向输出到console的文字加样式
- [转]SSIS包的调用方式
- github之无命令可视化界面操作——GitHub DeskTop
- MongoDB的连接字符串
- jenkins+testNG
- Java中equals()、equalsIgnoreCase()和==的区别
- 数据採集器服务——Socket(今天才发现AES加解密代码跟贴的时候不一样,貌似乱码,不知什么情况)
- 如何使用angularjs实现表单验证