作者cgyu (小龙)
看板Python
标题Re: [问题] numpy.r_ 的使用方法 ?
时间Wed Mar 22 15:50:30 2017
※ 引述《will12345610 (Mr.Positive)》之铭言:
: 小弟目前是numpy 新手,使用 numpy.r_ 看document 时看不太懂
: A string with three comma-separated integers 的使用方式。
: '0,2,0'
: 依据 two comma-seperated integers 的推法,我只知道沿着axis 0
: 就是 row 往下长,输出至少要2个dimension。 但是第三个数值0,我一直无法参透
: (6, 1)
: 以下是其他尝试,我还是不太懂他的含意
: (2, 3)
: (3, 2)
: (1, 6)
: 希望版上的numpy 大神们教教小弟 !!
1.If the index expression contains comma separated arrays, then stack them along their first axis.
2.If the index expression contains slice notation or scalars then create a 1-D array with a range indicated by the slice notation.
在np.r_两种用法中的第一种里面
np.r_['X,Y(,Z)',array,array]
np.r_ two comma-seperated integers
参数为两个整数的话,第一个数值为从第X轴连结
第二个代表新的这个阵列要大於等於Y维
Z预设为-1
三个整数的时候,前两个和上面一样,第三个代表你想要连接的阵列的数值
在新的阵列会分别在第Z+1维上面并列
看懂这三个参数然後能够在心理画出新的阵列
我会从Y、Z、X的顺序去看
注意X跟Z通常都会小於等於Y-1
上面的说明自己也觉得不完整和不好懂
要理解第三个参数我们先用以下的式子理解
np.r_['0,2,0',[1,2]]
先不管串接其他阵列,所以只有一个阵列
这段程式码只会将原本[1,2]增加为2维
然後把原有阵列里面的数值都放到第1维上面
跑处来的结果如下
[[1]
[2]]
1会在np.r_['0,2,0',[1,2]][0,0]
2会在np.r_['0,2,0',[1,2]][1,0]
np.r_['0,2,0',[1,2]].shape 就会是(2,1)
原本阵列的两个数都会在第1维上面
如果第三个参数改成1
np.r_['0,2,1',[1,2]]
就会变成 [[1,2]]两个数都在第二维并列
接着来看完整的例子如何连接两个阵列
np.r_['0,3,0'],[1,2,3],[4,5,6]]
上面代表新的阵列有三个维度(Y=3),每个数值在第一维并列(Z=0), [4,5,6]这个阵列顺着第一维串接(X=0)
先画出三维的阵列: [[[1,2,3]]]
但是数值要在第一维并列 所以是:
[[[1]]
[[2]]
[[3]]]
每一个都在第一维并列以後,从第一维(最外面括号里面)接下去:
[[[1]]
[[2]]
[[3]]
[[4]]
[[5]]
[[6]]]
这样要知道 .shape 会是多少一看就知道了:(6,1,1)
再一个例子
np.r_['2,3,1'],[1,2,3],[4,5,6]]
数值在三维中第二维(第二个括号里面)并列:
[[[1]
[2]
[3]]]
最後在第三维(最里面的刮号)里面串接:
[[[1,4]
[2,5]
[3,6]]]
第一个维度有1个值,第二个有3个(阵列在第二维并列),第三个维度则各有两个(两个阵列在第三维串接)
所以np.r_['0,3,0'],[1,2,3],[4,5,6]],shape 就是(1,3,2)
希望理解的没有错误,请大家多指教,谢谢
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 59.125.177.128
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1490169034.A.2D4.html
※ 编辑: cgyu (59.125.177.128), 03/22/2017 15:56:43
※ 编辑: cgyu (202.39.41.132), 03/22/2017 16:18:32
1F:推 will12345610: 感谢 cgyu 大神,你的范例终於让我掌握原则了!! 03/25 09:46