我有一個陣列A。我想將每個元素的第一個、第二個、...、第九個元素A[0],A[1],A[2]組成一個新陣列B。我介紹了當前和預期的輸出。
import numpy as np
A=np.array([np.array([[1, 2, 3],
[4, 5, 6 ],
[7, 8, 9]]),
np.array([[[10, 11, 12],
[13, 14, 15 ],
[16, 17, 18]]]),
np.array([[[19, 20, 21],
[22, 23, 24],
[25, 26, 27]]])], dtype=object)
for t in range(0,len(A)):
B=A[0][t][0]
print([B])
當前輸出為
[1]
[4]
[7]
預期的輸出是
array([[1,10,19],
[2,11,20],
[3,12,21],
[4,13,22],
[5,14,23],
[6,15,24],
[7,16,25],
[8,17,26],
[9,18,27]])
uj5u.com熱心網友回復:
您可以遍歷陣列,將所有值附加為列并轉置結果矩陣:
import numpy as np
A=np.array([np.array([[1, 2, 3],
[4, 5, 6 ],
[7, 8, 9]]),
np.array([[[10, 11, 12],
[13, 14, 15 ],
[16, 17, 18]]]),
np.array([[[19, 20, 21],
[22, 23, 24],
[25, 26, 27]]])], dtype=object)
out = np.array([A[i].flatten() for i in range(len(A))]).transpose()
#out = np.array([i.flatten() for i in A]).transpose() #Second option
print(out)
輸出:
[[ 1 10 19]
[ 2 11 20]
[ 3 12 21]
[ 4 13 22]
[ 5 14 23]
[ 6 15 24]
[ 7 16 25]
[ 8 17 26]
[ 9 18 27]]
uj5u.com熱心網友回復:
B = np.array([a.ravel() for a in A]).T
#array([[ 1, 10, 19],
# [ 2, 11, 20],
# [ 3, 12, 21],
# [ 4, 13, 22],
# [ 5, 14, 23],
# [ 6, 15, 24],
# [ 7, 16, 25],
# [ 8, 17, 26],
# [ 9, 18, 27]])
uj5u.com熱心網友回復:
你的陣列壞了。
如果你修復它,你可以更容易地處理它。.squeeze()從 numpy 陣列中搖出無用的維度。
numpy讓您轉置尺寸。
ravel展平一個陣列。這是一種有效的方法,但我選擇使用reshape
a1 = np.array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
a2 = np.array([[[10, 11, 12],
[13, 14, 15],
[16, 17, 18]]])
a3 = np.array([[[19, 20, 21],
[22, 23, 24],
[25, 26, 27]]])
A = [a1, a2, a3]
print([a.shape for a in A])
# [(3, 3), (1, 3, 3), (1, 3, 3)]
A = [a.squeeze() for a in A]
print([a.shape for a in A])
# [(3, 3), (3, 3), (3, 3)]
A = np.array(A)
print(repr(A))
# array([[[ 1, 2, 3],
# [ 4, 5, 6],
# [ 7, 8, 9]],
#
# [[10, 11, 12],
# [13, 14, 15],
# [16, 17, 18]],
#
# [[19, 20, 21],
# [22, 23, 24],
# [25, 26, 27]]])
A.transpose((1, 2, 0)) # explicit form of A.transpose()
# array([[[ 1, 10, 19],
# [ 2, 11, 20],
# [ 3, 12, 21]],
#
# [[ 4, 13, 22],
# [ 5, 14, 23],
# [ 6, 15, 24]],
#
# [[ 7, 16, 25],
# [ 8, 17, 26],
# [ 9, 18, 27]]])
A.transpose((1, 2, 0)).reshape((-1, 3))
# array([[ 1, 10, 19],
# [ 2, 11, 20],
# [ 3, 12, 21],
# [ 4, 13, 22],
# [ 5, 14, 23],
# [ 6, 15, 24],
# [ 7, 16, 25],
# [ 8, 17, 26],
# [ 9, 18, 27]])
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/497817.html
