不说其他的,直接给个例子就懂了。
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 数组。
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)