他のことは何も言わず、理解するために例を挙げてください。
a は 1 次元配列です
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)
1 行 4 列のディメンションを a に追加することを示します。np.newaxis が前にある場合はディメンションが前に挿入され、そうでない場合はその逆であると結論付けることができます。二次元で見てみましょう。
a は、2 行 4 列の 2 次元配列 (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,:]在前增加一个维度
'''
そして、3 次元以上の類似点について、読者は理解を深めることができます。
例を挙げる!
異なる次元の配列を追加します。
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 インデックス演算子は新しい軸を に挿入し、2 次元の 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)