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()示例:

  1. import matplotlib.pyplot as plt
  2. import numpy as np
  3.  
  4. def log_type(name,arr):
  5. print("数组{}的大小:{}".format(name,arr.size))
  6. print("数组{}的维度:{}".format(name,arr.shape))
  7. print("数组{}的维度:{}".format(name,arr.ndim))
  8. print("数组{}元素的数据类型:{}".format(name,arr.dtype))
  9. #print("数组:{}".format(arr.data))
  10.  
  11. a = np.floor(10*np.random.random((3,4)))
  12. print(a)
  13. log_type('a',a)
  14.  
  15. a1 = a.ravel()
  16. print("a1:{}".format(a1))
  17. log_type('a1',a1)
  18. a1[2] = 100
  19.  
  20. print(a)
  21. log_type('a',a)

flatten()示例

  1. import matplotlib.pyplot as plt
  2. import numpy as np
  3.  
  4. def log_type(name,arr):
  5. print("数组{}的大小:{}".format(name,arr.size))
  6. print("数组{}的维度:{}".format(name,arr.shape))
  7. print("数组{}的维度:{}".format(name,arr.ndim))
  8. print("数组{}元素的数据类型:{}".format(name,arr.dtype))
  9. #print("数组:{}".format(arr.data))
  10.  
  11. a = np.floor(10*np.random.random((3,4)))
  12. print(a)
  13. log_type('a',a)
  14.  
  15. a1 = a.flatten()
  16. print("修改前a1:{}".format(a1))
  17. log_type('a1',a1)
  18. a1[2] = 100
  19. print("修改后a1:{}".format(a1))
  20.  
  21. print("a:{}".format(a))
  22. log_type('a',a)

squeeze()示例:

1. 没有single-dimensional entries的情况

  1. import matplotlib.pyplot as plt
  2. import numpy as np
  3.  
  4. def log_type(name,arr):
  5. print("数组{}的大小:{}".format(name,arr.size))
  6. print("数组{}的维度:{}".format(name,arr.shape))
  7. print("数组{}的维度:{}".format(name,arr.ndim))
  8. print("数组{}元素的数据类型:{}".format(name,arr.dtype))
  9. #print("数组:{}".format(arr.data))
  10.  
  11. a = np.floor(10*np.random.random((3,4)))
  12. print(a)
  13. log_type('a',a)
  14.  
  15. a1 = a.squeeze()
  16. print("修改前a1:{}".format(a1))
  17. log_type('a1',a1)
  18. a1[2] = 100
  19. print("修改后a1:{}".format(a1))
  20.  
  21. print("a:{}".format(a))
  22. log_type('a',a)

从结果中可以看到,当没有single-dimensional entries时,squeeze()返回额数组对象是一个view,而不是copy。

2. 有single-dimentional entries 的情况

  1. import matplotlib.pyplot as plt
  2. import numpy as np
  3.  
  4. def log_type(name,arr):
  5. print("数组{}的大小:{}".format(name,arr.size))
  6. print("数组{}的维度:{}".format(name,arr.shape))
  7. print("数组{}的维度:{}".format(name,arr.ndim))
  8. print("数组{}元素的数据类型:{}".format(name,arr.dtype))
  9. #print("数组:{}".format(arr.data))
  10.  
  11. a = np.floor(10*np.random.random((1,3,4)))
  12. print(a)
  13. log_type('a',a)
  14.  
  15. a1 = a.squeeze()
  16. print("修改前a1:{}".format(a1))
  17. log_type('a1',a1)
  18. a1[2] = 100
  19. print("修改后a1:{}".format(a1))
  20.  
  21. print("a:{}".format(a))
  22. log_type('a',a)

numpy.ravel()/numpy.flatten()/numpy.squeeze()的更多相关文章

  1. 学习笔记27—python中numpy.ravel() 和 flatten()函数

    简介 首先声明两者所要实现的功能是一致的(将多维数组降位一维).这点从两个单词的意也可以看出来,ravel(散开,解开),flatten(变平).两者的区别在于返回拷贝(copy)还是返回视图(vie ...

  2. numpy.ravel() vs numpy.flatten()

    首先声明两者所要实现的功能是一致的(将多维数组降为一维),两者的区别在于返回拷贝(copy)还是返回视图(view),numpy.flatten()返回一份拷贝,对拷贝所做的修改不会影响(reflec ...

  3. numpy的ravel()和flatten()函数

    相同点: 两者所要实现的功能是一致的(将多维数组降位一维).这点从两个单词的意也可以看出来,ravel(散开,解开),flatten(变平). In [14]: x=np.array([[1,2],[ ...

  4. Python的 numpy中 numpy.ravel() 和numpy.flatten()的区别和使用

    两者所要实现的功能是一致的(将多维数组降为一维), 两者的区别在于返回拷贝(copy)还是返回视图(view),numpy.flatten() 返回一份拷贝,对拷贝所做的修改不会影响(reflects ...

  5. numpy.ravel() 与 numpy.flatten()

    两者都可实现将多维数组降位一维的功能 numpy.flatten()返回拷贝,对拷贝所做的修改不会影响原始矩阵 numpy.ravel()返回视图,会影响原始矩阵 1)ravel() In [16]: ...

  6. 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 ...

  7. 【numpy】新版本中numpy(numpy>1.17.0)中的random模块

    numpy是Python中经常要使用的一个库,而其中的random模块经常用来生成一些数组,本文接下来将介绍numpy中random模块的一些使用方法. 首先查看numpy的版本: import nu ...

  8. Numpy中扁平化函数ravel()和flatten()的区别

    在Numpy中经常使用到的操作由扁平化操作,Numpy提供了两个函数进行此操作,他们的功能相同,但在内存上有很大的不同. 先来看这两个函数的使用: from numpy import * a = ar ...

  9. numpy下的flatten()函数用法

    flatten是numpy.ndarray.flatten的一个函数,其官方文档是这样描述的: ndarray.flatten(order='C') Return a copy of the arra ...

随机推荐

  1. SQL Server 更新 触发器

    - 复制代码 代码如下: create trigger TR_MasterTable_Update on MasterTable after update as if update ([Type])- ...

  2. asp.net core 系列之允许跨越访问(Enable Cross-Origin Requests:CORS)

    这篇文章介绍如何允许跨域访问 浏览器安全不允许不同域名的网页之间发送请求.这种限制叫做同源策略(the same-origin policy). 同源策略可以防止一个恶意的站点读取另一个站点的敏感数据 ...

  3. cpu gpu数据同步

    https://developer.apple.com/documentation/metal/advanced_command_setup/cpu_and_gpu_synchronization d ...

  4. promise对象解决回调地狱

    先放一张图片感受一下回调地狱 看起来是真的很让人头痛的东西 而现在我这里使用promise对象来解决回调地狱 采用链式的 then,可以指定一组按照次序调用的回调函数. 这时,前一个 then 里的一 ...

  5. python 字典的KeyError处理方法

    先看一段代码: user = dict(name="brainliao", age=32) print(user["sex"]) 运行结果如下: user这个字 ...

  6. vConsole

    说明 由于移动端项目在手机中调试时不能使用chrome的控制台,而vconsole是对pc端console的改写 使用方法 使用 npm 安装: npm install vconsole 使用webp ...

  7. Struct2-使用随笔

    提要:最近写了一个2-3各页面的使用Struts2的Demo,在这里做下总结,都已经3年多没做J2EE了,有些感觉都快找不到了. 目录 1.必备开发工具 2.必备jar包 3.了解知识点 4.遇到的问 ...

  8. CentOS 6.4 编译安装 gcc 4.8.1(转)

    今天在isocpp上看到“GCC 4.8.1 released, C++11 feature complete”这个消息,非常兴奋.终于有一个全面支持C++11语言特性的编译器了! 当然了,gcc仅仅 ...

  9. STL源码剖析(仿函数/bind2nd)

    仿函数(functors)其实就是重载了operator()的对象. 下面简单先看看它的一个例子: #include <iostream> using namespace std; tem ...

  10. 【PPT】PPT倒计时动画的制作方法 5.4.3.2.1...

    制作步骤: 1.输入数字 在PPT空白页面中插入横排文本框,输入数字54321,并修改数字字体和大小. 2.修改数字的间距,让数字重叠在一起 字体间距 - 其他间距 - 紧缩 - 输入 150 3.选 ...