笔记:对numpy中shape的理解
来源:互联网 发布:dota2网络连接超时 编辑:程序博客网 时间:2024/06/06 02:21
本文转载自:http://blog.csdn.net/by_study/article/details/67633593
环境: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的返回值是一个元组,里面每个数字表示每一维的长度
阅读全文
0 0
- 笔记:对numpy中shape的理解
- numpy中shape函数的一些用法
- numpy中shape为(m,)的是行向量
- python numpy array中维度的区别 array.shape
- Python:numpy中shape和reshape的用法
- numpy shape函数的使用
- numpy中axis的一些理解
- numpy中axis理解
- 对Numpy数组按axis运算的理解
- Python之numpy的shape函数
- Python的numpy库中的shape用法
- python的numpy包中shape,tile,argsort函数与sorted函数使用方法
- [Erlang 学习笔记] 对 erlang 中 Application 的理解
- 三维建模中shape of silhouette 的简要理解
- 【笔记】对CMMI的理解
- Python工具包numpy中tile函数的理解
- Python 中对数据的排序问题(numpy , pandas)
- numpy函数:shape用法
- 内存管理
- C语言位运算符
- Eclipse Maven "Create a simple project" 没有web.xml文件
- t-分布邻域嵌入算法(t-SNE algorithm)简单理解
- 解决在Android 7.0上PopupWindow.showAsDropDown不起作用
- 笔记:对numpy中shape的理解
- >mysql -uroot -p Enter password: ERROR 1045 (28000): Access denied ,被mysql连接问题折磨到问题解决,分享
- 浅谈ES6新特性
- 台湾大学深度学习课程 学习笔记 lecture1-2 Neural Network Basics
- 汇编 in out的用法示例
- 哈尔滨理工大学第七届程序设计竞赛决赛(网络赛-高年级组)B题幸运大奖
- cuda dirver API总结
- 数据结构实验之查找一:二叉排序树
- 写好一份技术简历很重要