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. Jenkins环境初步配置

    为研究在kubernetes上的CICD,先在物理环境下安装个JenKins热热身. 安装Jenkins 在官网https://jenkins.io/下载war包,我的是http://mirrors. ...

  2. 通过HttpServletRequest转换获得json对象

    如何把前端传过来的Json对象解析出来?在java web应用中,我们如何获取post请求body中的内容?通常利用request获取参数可以直接通过req.getParameter(name)的方式 ...

  3. .net 4.5如何使用Async和Await进行异步编程

    通过使用异步编程,可避免出现性能瓶颈,并提高应用程序的整体响应.然而,技术编写异步应用程序的传统方法过于复杂,这使得异步程序难以编写,调试和维护. Visual Studio2012引入了一个简单的开 ...

  4. 深度增强学习--DPPO

    PPO DPPO介绍 PPO实现 代码DPPO

  5. hadoop运行报错Wrong FS: hdfs:/, expected: file:///

    内容源自:https://blog.csdn.net/u014470581/article/details/51480600 报错信息: Exception in thread "main& ...

  6. 不输入sudo使用docker

    系统是debian系 安装: sudo apt install docker.io 将当前用户加入‘docker’组: sudo gpasswd -a ${USER} docker  刷新权限: su ...

  7. 【百度地图JavaScript API】手机端浏览器定位的实现

    [百度地图JavaScript API]手机端浏览器定位的实现 https://blog.csdn.net/xiao190128/article/details/72579476

  8. Node.js mimimn图片批量下载爬虫 1.00

    这个爬虫在Referer设置上和其它爬虫相比有特殊性.代码: //====================================================== // mimimn图片批 ...

  9. JedisCluster操作redis集群demo

    package com.chenk; import java.util.HashMap; import java.util.HashSet; import java.util.List; import ...

  10. 安装kubernetes dashboard

    一.kubernetes dashboard kubernetes dashboard是k8s的web管理界面 二.安装 k8s的版本为1.5 1.创建dashboard-controller.yam ...