环境:Windows, Python2.7

一维情况:

>>> import numpy as np

>>> a = np.array([2,3,33])

>>> a

array([ 2 3 33 ])

>>> print a

[ 2 3 33 ]

>>> a.shape

(3, )

一维情况中array创建的可以看做list(或一维数组),创建时用()和[ ]都可以,多维也一样,两种方法创建后的输出显示结果也相同,这里使用[ ]进行创建

输出a的shape会显示一个参数,就是这个list中元素个数

创建时也可以直接使用np.zeros([1]),这样会创建全0的list,或者np.ones([1]),不需要我们输入数据,见下图:

>>> a = np.zeros([1])

>>> b = np.ones([1])

>>> print a

[ 0. ]

>>> print b

[ 1. ]

二维情况:

>>> a = np.array([[2,2,2],[3,3,3]])

>>> print a

[[ 2 2 2 ]

[ 3 3 3 ]]

>>> a.shape

(2, 3)

二维情况中array创建的可以看做二维数组(矩阵),注意创建时需要使用2个[ ],输出a的shape显示的(2,3)相当于有2行,每行3个数,使用np.ones创建结果如下:

>>> a = np.ones([2, 3]) >>> print a [[ 1. 1. 1. ] [ 1. 1. 1. ]]

多维情况:

多维情况统一使用np.ones进行创建,先看三维情况:

>>> a = np.ones([1,1,1])

>>> print a

[[[ 1.]]]

>>> a = np.ones([1,1,2])

>>> print a

[[[ 1. 1.]]]

>>> a = np.ones([1,2,1])

>>> print a

[[[ 1.]

[ 1.]]]

>>> a = np.ones([2,1,1])

>>> print a

[[[ 1.]]

[[ 1.]]]

从上面的代码可以看出,三维情况创建时后面2个参数可以看做是创建二维数组,第1个参数看做创建的二维数组的个数,所以创建时输入的参数为2,3,2时,就相当于创建了2个3行2列的二维数组,如下:

>>> a = np.ones([2,3,2])

>>> print a

[[[ 1. 1.]

[ 1. 1.]

[ 1. 1.]]

[[ 1. 1.]

[ 1. 1.]

[ 1. 1.]]]

然后看四维情况:

>>> a = np.ones([1,1,1,1])

>>> print a

[[[[ 1.]]]]

>>> a = np.ones([1,1,1,2])

>>> print a

[[[[ 1. 1.]]]]

>>> a = np.ones([1,1,2,1])

>>> print a

[[[[ 1.]

[ 1.]]]]

>>> a = np.ones([1,2,1,1])

>>> print a

[[[[ 1.]]

[[ 1.]]]]

>>> a = np.ones([2,1,1,1])

>>> print a

[[[[ 1.]]]

[[[ 1.]]]]

从上面代码可以看出:四维时将第一个参数设置为2和第二个参数设置为2时,输出结果中间的空行数量不同,我把它理解成先创建1行1列的二维数组[[ 1. ]],然后按照第2个参数打包这样的二维数组,如果第二个参数是2,则打包2个2维数组变成[[[ 1. ]],[[ 1. ]]](小包),然后按照第1个参数再打包这样的包,如果第一个参数是2,则变成[[[[ 1. ]], [[ 1. ]]], [[[ 1. ]], [[ 1. ]]]](大包),就是下面的结果:

>>> a = np.ones([2,2,1,1])

>>> print a

[[[[ 1.]]

[[ 1.]]]

[[[ 1.]]

[[ 1.]]]]

四维以上的结果也是这么理解~输出中区分参数用空行~

然后来看一下特定输出:

>>> import numpy as np

>>> m = np.ones([2,3,2,3])

>>> print m

[[[[ 1. 1. 1.]

[ 1. 1. 1.]]

[[ 1. 1. 1.]

[ 1. 1. 1.]]

[[ 1. 1. 1.]

[ 1. 1. 1.]]]

[[[ 1. 1. 1.]

[ 1. 1. 1.]]

[[ 1. 1. 1.]

[ 1. 1. 1.]]

[[ 1. 1. 1.]

[ 1. 1. 1.]]]]

>>> print m[1,:,:,:]

[[[ 1. 1. 1.]

[ 1. 1. 1.]]

[[ 1. 1. 1.]

[ 1. 1. 1.]]

[[ 1. 1. 1.]

[ 1. 1. 1.]]]

>>> print m[:,1,:,:]

[[[ 1. 1. 1.]

[ 1. 1. 1.]]

[[ 1. 1. 1.]

[ 1. 1. 1.]]]

>>> print m[:,:,1,:]

[[[ 1. 1. 1.]

[ 1. 1. 1.]

[ 1. 1. 1.]]

[[ 1. 1. 1.]

[ 1. 1. 1.]

[ 1. 1. 1.]]]

>>> print m[:,:,:,1]

[[[ 1. 1.]

[ 1. 1.]

[ 1. 1.]]

[[ 1. 1.]

[ 1. 1.]

[ 1. 1.]]]

前面print m很好理解~

然后print m[1,:,:,:],:代表默认值(就是一开始你输入时指定的值),这句代码相当于输出2个包中的第1个包(从0开始计数),这个包里面有3个小包,小包里面是2*3的二维数组,所以结果就是上面的~

然后print m[:,1,:,:],相当于输出2个大包,每个大包输出第1个小包,小包里面是2*3的二维数组

然后print m[:,:,1,:],相当于输出2个大包,每个大包输出3个小包,小包里面是二维数组的第1行

然后print m[:,:,:,1],相当于输出2个大包,每个大包输出3个小包,小包里面是1*2的二维数组

其他结果可以自己去试试~

总结:采用np.array()创建时需要几个维度就要用几个[ ]括起来,这种创建方式要给定数据;采用np.ones()或np.zeros()创建分别产生全1或全0的数据,用a.shape会输出你创建时的输入,创建时输入了几个维度输出就会用几个[ ]括起来,shape的返回值是一个元组,里面每个数字表示每一维的长度

以上这篇对numpy中shape的深入理解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

python中shape是什么意思_对numpy中shape的深入理解相关推荐

  1. python创建列向量_关于Numpy中的行向量和列向量详解

    关于Numpy中的行向量和列向量详解 行向量 方式1 import numpy as np b=np.array([1,2,3]).reshape((1,-1)) print(b,b.shape) 结 ...

  2. python花式索引_初探Numpy中的花式索引

    Numpy中对数组索引的方式有很多(为了方便介绍文中的数组如不加特殊说明指的都是Numpy中的ndarry数组),比如:基本索引:通过单个整数值来索引数组 import numpy as np arr ...

  3. sum函数python后面很多小数_解决Numpy中sum函数求和结果维度的问题

    使用Numpy(下面简称np)中的sum函数对某一维度求和时,由于该维度会在求和后变成一个数,所以所得结果的这一维度为空. 比如下面的例子: a = np.array([[1,2,3],[4,5,6] ...

  4. python如何把二进制转文本_在python3中如何把文本转换为二进制

    在python3中如何把文本转换为二进制 在python3中把文本转换为二进制的方法:首先修改dirroot为要读取的文件夹的路径:然后遍历所有的文件夹,读取txt文件:最后更改newdirroot为 ...

  5. python怎么从数组中提取连续的数字_从numpy数组中删除连续的数字

    我是python新手,但我对我要做的这个项目真的很困惑.我看到了一张图片here.我要做的是找出图像中像素范围从0到255的所有方块的平均值.下面的代码显示了我用来计算图片值的方法.出现的问题是像素/ ...

  6. python数组切片赋值_基于numpy中数组元素的切片复制方法

    代码1: #!/usr/bin/python import numpy as np arr1 = np.arange(10) print(arr1) slice_data = arr1[3:5] pr ...

  7. python 数列筛选_对numpy中的数组条件筛选功能详解

    在程序设计中,时常会遇到数据的唯一化.相同.相异信息的提取等工作,在格式化的向量存储矩阵中南,numpy能够提供比较不错的快速处理功能. 1,唯一化的实现: In [63]: data = np.ar ...

  8. python 空矩阵_在NumPy中创建空数组/矩阵的方法

    如何在NumPy中创建空数组/矩阵? 在添加行的情况下,你最好的选择是创建一个与数据集最终一样大的数组,然后向它添加数据 row-by-row: >>> import numpy & ...

  9. python定义一个空数组_在NumPy中如何创建一个空的数组/矩阵?

    如何以我通常使用列表(List)的方式使用Numpy数组或矩阵? 我想创建一个空的数组(或矩阵),然后每次添加一列(或行)到这个数组(或矩阵). 目前能想到的方法是: mat = None for c ...

  10. python布尔型数组_对numpy中布尔型数组的处理方法详解

    布尔数组的操作方式主要有两种,any用于查看数组中是否有True的值,而all则用于查看数组是否全都是True. 如果用于计算的时候,布尔量会被转换成1和0,True转换成1,False转换成0.通过 ...

最新文章

  1. 通过代码自定义cell(cell的高度不一致)
  2. Spring的Hello, world,还有拿来主义
  3. Android Settings中显示自定义dialog
  4. mysql 一个文章多个分类_jdbc mysql 插入一篇文章并与多个标签,一个分类建立关联关系。...
  5. vue 如何调用微信分享_Vue开发 添加微信分享功能(全局分享)
  6. 有计算机考试励志的文案,关于考试的句子励志
  7. javascript中的options.add() options.remove() options(index)或options.item(index)
  8. 其他干货——如何做科学报告(oral, poster, eLightning)
  9. 昆仑通泰界面UI,复制可用,昆仑通泰触摸屏设计界面。MCGS 组态软件各版本均复制可用
  10. 【机器学习】特征工程的最佳实践
  11. 蓝桥杯web开发-5道模拟题让你信心满满
  12. c语言的条件运算符,条件运算符c语言
  13. 分组转发和路由选择基础
  14. 第4章 虚拟机性能监控、故障处理工具(上)
  15. mysql8.0压缩包安装
  16. OpenCV+ip摄像头实现远程实时监控
  17. 椭圆一般方程(ABCDEF)转椭圆参数方程(长短轴,几何中心)
  18. 从事音视频开发,需要学习哪些知识点?
  19. 《Android深入透析》之Android事件分发机制
  20. html上传文件的实例

热门文章

  1. 太牛了!某大佬程序猿北漂16年,从睡天桥到身价数千万,衣锦还乡重庆住豪宅!...
  2. 关于前端架构的过去、现在与未来
  3. Learn Git Branching 笔记
  4. Partial Dependence Plots - 部分依赖图实践
  5. 基于大规模语料的新词发现算法
  6. Microsoft Visual C++ 14.0 is required.
  7. Android 监听wifi热点打开和关闭广播
  8. 麦马大学的计算机录取要求,麦克马斯特大学,麦马相当于中国哪所大学?
  9. Linux系统备份及迁移到新硬盘
  10. 侦探系列-照片隐藏信息提取