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()的更多相关文章

  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. C语言嵌入式系统编程修炼

    C语言嵌入式系统编程修炼 2008-08-19 作者:宋宝华 来源:天极网 C语言嵌入式系统编程修炼之背景篇 本文的讨论主要围绕以通用处理器为中心的协议处理模块进行,因为它更多地牵涉到具体的C语言编程 ...

  2. 如何限制jenkins的任务在某个节点上执行

    1.首先给节点打标签,一个节点可以打多个标签,中间使用空格分开 2.其次在每个任务上标记执行的标签位置,这样这个任务就在包含这些标签的节点上执行 3.通过这个方法限制的任务,只会跑在指定节点上,即是当 ...

  3. 剖析ASP.NET Core(Part 2)- AddMvc(译)

    原文:https://www.stevejgordon.co.uk/asp-net-core-mvc-anatomy-addmvccore发布于:2017年3月环境:ASP.NET Core 1.1 ...

  4. Shell学习:read的选项及用法

    转摘: http://kb.cnblogs.com/a/2255702/ 1. Read的一些选项 Read可以带有-a, -d, -e, -n, -p, -r, -t, 和 -s八个选项. -a : ...

  5. AI 语音对话技术

    机器学习以及自然语言处理技术的进步,开启了人与人工智能进行语音交互的可能,人们透过对话的方式获取信息.与机器进行交互,将不再只是存在科幻情结当中.语音交互是未来的方向,而智能音箱则是语音交互落地的第一 ...

  6. MySQL : ERROR 1042 (HY000): Can't get hostname for your address

    摘自: http://www.siutung.org/post/506/ 使用Navicat for MySQL连接远程的MySQL服务器,却提示:Can't get hostname for you ...

  7. Java中的SPI(Service Provider Interface)

    转自:http://singleant.iteye.com/blog/1497259 最近看到公司的一些框架和之前看到的开源的一些框架的一些服务发现和接入都采用了java的spi机制. 所以简单的总结 ...

  8. 【转】The && and || Operator in JavaScript

    原文: https://blog.mariusschulz.com/2016/05/25/the-andand-and-operator-in-javascript The && an ...

  9. [Algorithom] Shuffle an array

    Shuffling is a common process used with randomizing the order for a deck of cards. The key property ...

  10. CardLayout使用

    相对于BoxLayout,GridBugLayut等常用的Swing layout,CardLayout是特殊的,前者是一个容器内布置组件,而后者是在一个容器内放置很多页面(但一个时间只用显示一个). ...