Numpy给数组增加维度的操作

不说其他的,直接给个例子就懂了。

a是一个一维数组

a = np.array([0.0, 10.0, 20.0, 30.0])
print(a.shape,a[:, np.newaxis],a[:, np.newaxis].shape)

#输出
(4,) 

[[ 0.]
 [10.]
 [20.]
 [30.]]

 (4, 1)

表示给a增加一个维度,4行1列,换个方向呢?

print(a.shape,a[np.newaxis,:],a[ np.newaxis,:].shape)

#输出
(4,) [[ 0. 10. 20. 30.]] (1, 4)

表示给a增加一个维度,1行4列。可以总结为np.newaxis在前,则在前插入一个维度,否则反之。再来看一个二维的。

a是一个二维数组,(2, 4),2行4列。

a = np.array([[0.0, 10.0, 20.0, 30.0],[1,2,3,4]])
print(a.shape,a[:, np.newaxis],a[:, np.newaxis].shape)

'''
输出
[[[ 0. 10. 20. 30.]]

 [[ 1.  2.  3.  4.]]]

 (2, 1, 4)
                                            
 二维变成三维,a[:, np.newaxis],在后增加一个维度 
 '''                                   
                                            
print(a.shape,a[np.newaxis,:],a[ np.newaxis,:].shape)

'''
输出
[[[ 0. 10. 20. 30.]
  [ 1.  2.  3.  4.]]] 
                                             
 (1, 2, 4)

二维变成三维,a[np.newaxis,:]在前增加一个维度
'''

那么对于三维以上的类似,读者可以尝试,加深理解。

举个例子吧!

不同维数组相加。

a = np.array([0.0, 10.0, 20.0, 30.0])
b = np.array([1.0, 2.0, 3.0])
print(a[:, np.newaxis] + b)


'''
输出

[[ 1.  2.  3.]
 [11. 12. 13.]
 [21. 22. 23.]
 [31. 32. 33.]]

'''  

这里 newaxis 索引运算符将新轴插入 a 使之成为二维的 4x1 数组。结合 4x1 数组与 b ,有形状 (3,) 产量A 4x3 数组。 

np.expand_dims  用于扩展数组的形状

a = np.array([[[1,2,3],[4,5,6]]])
print(a.shape)  #(1, 2, 3)
b=np.expand_dims(a, axis=0) #表示在0位置添加维数
print(b,b.shape)  #(1, 1, 2, 3)    0,1,2,3以此类推。 

输出:

(1, 2, 3)

[[[[1 2 3]
   [4 5 6]]]]

 (1, 1, 2, 3)

猜你喜欢

转载自blog.csdn.net/weixin_48266700/article/details/123697184
今日推荐