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)

最新文章

  1. 【Python】引用计数
  2. Kali信息收集系列:(都是我以前的笔记整理了一下,就没加水印,习惯就好)
  3. linux内核追踪——find_next_bit函数详详详解
  4. 每天一个linux命令--su
  5. ubuntu14.04安装dropbox
  6. Solve error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2'
  7. Spring中Bean的配置:基于XML文件的方式
  8. Gym 100285G Cipher Message 3
  9. asp.net MVC日志插件Log4Net学习笔记一:保存日志到本地
  10. js获取当前url地址及参数
  11. EffectiveC#15--使用using和try/finally来做资源清理
  12. Django URL 命名空间
  13. hdu4362 dp + 单调队列优化
  14. Java注解处理器--编译时处理的注解
  15. Python爬虫入门教程 59-100 python爬虫高级技术之验证码篇5-极验证识别技术之二
  16. 在aspx中,如果要引用一个ID号,需要引用外层的ID号(内层的不行)
  17. Docker 常用命令(一)
  18. ABP框架系列之四十二:(Object-To-Object-Mapping-对象映射)
  19. 什么是Java优先级队列(Priority Queue)?
  20. Find the location of libmysqlclient.so.X file in Linux environments

热门文章

  1. matlab的输出流控制
  2. IntelliJ IDEA maven项目的基础配置
  3. Chrome 控制台新玩法-向输出到console的文字加样式
  4. [转]SSIS包的调用方式
  5. github之无命令可视化界面操作——GitHub DeskTop
  6. MongoDB的连接字符串
  7. jenkins+testNG
  8. Java中equals()、equalsIgnoreCase()和==的区别
  9. 数据採集器服务——Socket(今天才发现AES加解密代码跟贴的时候不一样,貌似乱码,不知什么情况)
  10. 如何使用angularjs实现表单验证