https://www.bbsmax.com/A/1O5E78b7z7/

https://www.cnblogs.com/lindaxin/p/8074921.html

http://blog.csdn.net/by_study/article/details/67633593

环境:Windows, Python3.5

一维情况:

1

2

3

4

5

6

7

8

>>>> import numpy as np 

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

>>> a 

array([ 2 3 33 ]) 

>>> print(a) 

[ 2 3 33 ] 

>>> a.shape 

(3, )<br>>>> a.shape[0]  <br>3<br>>>> a.shape[1]  <br>Traceback (most recent call last):<br>  File "<stdin>", line 1, in <module><br>IndexError: tuple index out of range

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

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

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

1

2

3

4

5

6

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

b = np.ones([1])

>>> print(a) 

[ 0. ] 

>>> print(b) 

[ 1. ]

二维情况:

1

2

3

4

5

6

7

8

9

10

11

12

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

>>> a

array([[ 2,  3, 33],

       [ 2,  1,  1]])

>>> a.shape[0]

2

>>> a.shape[1]

3

>>> a.shape[2]

Traceback (most recent call last):

  File "<stdin>", line 1, in <module>

IndexError: tuple index out of range

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

1

2

3

4

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

>>> a

array([[ 1.,  1.,  1.],

       [ 1.,  1.,  1.]])

多维情况:

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

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

>>> a

array([[[ 1.]]])

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

>>> a

array([[[ 1.,  1.]]])

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

>>> a

array([[[ 1.],

        [ 1.]]])

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

>>> a

array([[[ 1.]],

       [[ 1.]]])

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

1

2

3

4

5

6

7

8

9

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

>>> a

array([[[ 1.,  1.],

        [ 1.,  1.],

        [ 1.,  1.]],

       [[ 1.,  1.],

        [ 1.,  1.],

        [ 1.,  1.]]])

然后看四维情况:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

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

>>> a

array([[[[ 1.]]]])

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

>>> a

array([[[[ 1.,  1.]]]])

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

array([[[[ 1.],

         [ 1.]]]])

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

array([[[[ 1.]],

        [[ 1.]]]])

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

array([[[[ 1.]]],

       [[[ 1.]]]])

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

1

2

3

4

5

6

7

8

9

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

array([[[[ 1.]],

        [[ 1.]]],

       [[[ 1.]],

        [[ 1.]]]])

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

然后来看一下特定输出:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

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

>>> m

array([[[[ 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.]]]])

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

array([[[ 1.,  1.,  1.],

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

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

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

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

        [ 1.,  1.,  1.]]])

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

array([[[ 1.,  1.,  1.],

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

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

        [ 1.,  1.,  1.]]])

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

array([[[ 1.,  1.,  1.],

        [ 1.,  1.,  1.],

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

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

        [ 1.,  1.,  1.],

        [ 1.,  1.,  1.]]])

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

array([[[ 1.,  1.],

        [ 1.,  1.],

        [ 1.,  1.]],

       [[ 1.,  1.],

        [ 1.,  1.],

        [ 1.,  1.]]])

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

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

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

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

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

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

np.shape[]是对应到某一维上输出指定维的长度

numpy的shape用法(转http://blog.csdn.net/by_study/article/details/67633593)相关推荐

  1. Android Volley完全解析(一),初识Volley的基本用法 转载地址:http://blog.csdn.net/guolin_blog/article/details/17482095

    转载地址:http://blog.csdn.net/guolin_blog/article/details/17482095 1. Volley简介 我们平时在开发Android应用的时候不可避免地都 ...

  2. https://blog.csdn.net/blmoistawinde/article/details/84329103

    背景     很多场景需要考虑数据分布的相似度/距离:比如确定一个正态分布是否能够很好的描述一个群体的身高(正态分布生成的样本分布应当与实际的抽样分布接近),或者一个分类算法是否能够很好地区分样本的特 ...

  3. Tesseract 3 语言数据的训练方法【转】http://blog.csdn.net/dragoo1/article/details/8439373

    Tesseract 3 语言数据的训练方法(转) 分类: 开源2012-12-26 15:42 92人阅读 评论(0) 收藏 举报 说明:本人由于在google code下载了源码,先生成LIB_De ...

  4. http://blog.csdn.net/LANGXINLEN/article/details/50421988

    GitHub上史上最全的Android开源项目分类汇总 今天在看博客的时候,无意中发现了 @Trinea在GitHub上的一个项目 Android开源项目分类汇总, 由于类容太多了,我没有一个个完整地 ...

  5. VBS 常用总汇 (http://blog.csdn.net/sgear/article/details/1380223)

    VBS 常用总汇 (http://blog.csdn.net/sgear/article/details/1380223) 1 VBS    VBS脚本病毒的大量流行使我们对VBS的功能有了一个全新的 ...

  6. http://blog.csdn.net/hguisu/article/details/8836819

    1.  MySql+Memcached架构的问题 Memcached采用客户端-服务器的架构,客户端和服务器端的通讯使用自定义的协议标准,只要满足协议格式要求,客户端Library可以用任何语言实现. ...

  7. Android Volley完全解析(二),使用Volley加载网络图片 转载:http://blog.csdn.net/guolin_blog/article/details/174

    转载:http://blog.csdn.net/guolin_blog/article/details/17482165 在上一篇文章中,我们了解了Volley到底是什么,以及它的基本用法.本篇文章中 ...

  8. http://blog.csdn.net/guolin_blog/article/details/17482095/

    转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/17482095 1. Volley简介 我们平时在开发Android应用的时候不可避 ...

  9. http://blog.csdn.net/neiloid/article/details/7037093#

    1. 显示系统中全部Android平台: android list targets 2. 显示系统中全部AVD(模拟器): android list avd 3. 创建AVD(模拟器): androi ...

最新文章

  1. android处理url中的特殊字符
  2. 【计算机网络】物理层 : 数据通信 ( 数据通信模型 | 信源 | 信宿 | 信道 | 通信方式 | 单工 | 半双工 | 全双工 | 数据传输方式 | 串行 | 并行 )
  3. 【Machine Learning实验2】 Logistic Regression求解classification问题
  4. 生物医学图片处理——怎样才算不当操作?
  5. javaweb连接不上mysql怎么办_java web应用连接mysql会突然connection连接失败
  6. phpcmsV9各种模板页面调用文章 hits 点击量和评论量 - 代码总结分类
  7. 算法竞赛入门 第2版 习题3-3 UVa1225
  8. 51单片机redefinition_lcd12864程序在keil中出现好多重新定义,尝试了很多办法都改不了,求助大家了...
  9. 学习笔记Android弹框material-dialogs
  10. gtp怎么安装系统_gpt格式硬盘如何安装win7系统教程
  11. 启动计算机键盘没反应,为什么键盘没反应了 键盘没反应原因分析及解决方法...
  12. chrome浏览器打开网址找不到服务器IP
  13. 数据结构C语言实现-6—图
  14. 老人手机藏“吸费”陷阱
  15. linux桌面 高分屏,让Linux下GNOME桌面、GDM登录界面适应高分屏的方法
  16. 管理软件到底有没有前途(三)-从国家十一五信息化战略规划来看
  17. 在线考试系统是网站还是计算机应用,在线考试系统在电脑和手机上使用的区别是什么-[问答]...
  18. 最新语音识别词错误率WER汇总
  19. 浅谈初中计算机机房管理,浅谈高校计算机机房管理.pdf
  20. spinor flash和spinand flash的区别

热门文章

  1. Java并发的类库_Java 并发类库AbstractQueuedSynchronizer 分析
  2. Note:类(Class)
  3. python 问题不符合dcp rule_约束不遵循CVXPY中的DCP规则
  4. mysql索引有哪些_MySQL索引是个什么东西
  5. python第三方开发软件_python开发者的必备工具(一)
  6. 【c语言】蓝桥杯入门训练 Fibonacci数列
  7. php e框架是啥,几款主流PHP框架的优缺点评比
  8. 前端技术周刊 2019-01-07:CSS 动画
  9. java产生随机数(学习)
  10. matlab 字符分割