假設一個 NumPy 陣列
a = np.array(
[[[1,2,3],
[4,5,6]],
[[7,8,9],
[10,11,12]]])
形狀將類似于 (2,2,3)。我想讓它看起來像這樣:
a = np.array(
[[1,2,3],
[7,8,9],
[4,5,6],
[10,11,12]]
)
哪個形狀會像(4,3)。如果我使用重塑,它看起來像:
a = np.array(
[[1,2,3],
[4,5,6],
[7,8,9],
[10,11,12]]
)
這不是我想要的。這該怎么做?
uj5u.com熱心網友回復:
使用numpy.stackand 的一種方式vstack:
np.vstack(np.stack(a, 1))
輸出:
array([[ 1, 2, 3],
[ 7, 8, 9],
[ 4, 5, 6],
[10, 11, 12]])
uj5u.com熱心網友回復:
通過使用索引方法,idx可以創建一個串列,指定 ex 的哪些索引a必須放置為新索引中的哪些索引,即idx重新排列串列:
idx = [0, 2, 1, 3]
a = a.reshape(4, 3)[idx]
a首先重新整形為預期的形狀,即 (4,3),然后由 重新排列idx。idx[1] = 2顯示ex 的index = 2中的值a將替換為new 中的index = 1a。
uj5u.com熱心網友回復:
這是您問題的更pythonic版本。這使用連接,因此附加陣列的行。
a = np.array(
[[[1,2,3],
[4,5,6]],
[[7,8,9],
[10,11,12]]]
)
def transform_2d(a_arr):
nrow = len(a[:])
all = a_arr[:,0]
for i in range(1,nrow):
all = np.concatenate((all, a_arr[:,i] ))
return all
print(transform_2d(a))
uj5u.com熱心網友回復:
首先使用transpose(或swapaxes) 將所需的行放在一起:
In [268]: a.transpose(1,0,2)
Out[268]:
array([[[ 1, 2, 3],
[ 7, 8, 9]],
[[ 4, 5, 6],
[10, 11, 12]]])
然后重塑如下:
In [269]: a.transpose(1,0,2).reshape(-1,3)
Out[269]:
array([[ 1, 2, 3],
[ 7, 8, 9],
[ 4, 5, 6],
[10, 11, 12]])
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/361981.html
