Python Essay

Numpy中的维度:

总的来说,可以理解为按行组织,这一点与matlab大为不同。从右维往左维依次堆叠。例如二维数组:np.random.rand(3,4)就是先用4个随机数组成一行(是真的一行),然后这样的行来3次;np.random.rand(3,4,2)的逻辑就是:每2个数是一行,然后这个的行来4遍,就成了4*2的矩阵,然后把这种矩阵作为新的行元素——即现在的一行不是真的一行,而是一个矩阵元素,然后3个这样的“类行”按行排列。

>>>a= np.random.rand(3,4,2)
array([[[ 0.6806039 , 0.24410191],
[ 0.15829912, 0.19577869],
[ 0.18192244, 0.05748635],
[ 0.6676653 , 0.19068973]],

[[ 0.93918674, 0.4853243 ],
[ 0.33657942, 0.74560534],
[ 0.04746867, 0.09783665],
[ 0.04349468, 0.89767394]],

[[ 0.93481183, 0.6093488 ],
[ 0.13856243, 0.18642052],
[ 0.87197376, 0.42786974],
[ 0.99821804, 0.85217982]]])

然后如果想把某一个维度后面的维度压缩掉,直接在reshape的该维度后面加上-1,即可,例如上例中:a.reshape(3,-1)就变成一个3*8的矩阵

numpy数组拼接:vstack, hstack
a=np.random.rand(1,3), b=np.random.rand(1,3), c=np.vstack([a,b])生成2*3数组,c=np.hstack([a,b])生成1*6数组

发表回复