我有一個形狀為 2、5 的陣列 X,如下所示:
0, 6, 7, 9, 1
2, 4, 6, 2, 7
我想重塑它以重復每一行 n 次,如下所示(示例使用 n = 3):
0, 6, 7, 9, 1
0, 6, 7, 9, 1
0, 6, 7, 9, 1
2, 4, 6, 2, 7
2, 4, 6, 2, 7
2, 4, 6, 2, 7
我嘗試如下使用 np.tile ,但它重復如下所示:
np.tile(X, (3, 5))
0, 6, 7, 9, 1
2, 4, 6, 2, 7
0, 6, 7, 9, 1
2, 4, 6, 2, 7
0, 6, 7, 9, 1
2, 4, 6, 2, 7
我如何有效地創建所需的輸出?
uj5u.com熱心網友回復:
如果a是主陣列:
a = np.array([0, 6, 7, 9, 1, 2, 4, 6, 2, 7])
我們可以通過首先重塑為所需的陣列形狀來做到這一點,然后np.repeat用作:
b = a.reshape(2, 5)
final = np.repeat(b, 3, axis=0)
它也可以完成np.tile,但它需要不必要的額外操作,如下所示。所以,np.repeat會是更好的選擇。
test = np.tile(b, (3, 1))
final = np.concatenate((test[::2], test[1::2]))
uj5u.com熱心網友回復:
對于復雜的重復,我會np.kron改用:
np.kron(x, np.ones((2, 1), dtype=int))
對于一些相對簡單的事情,
np.repeat(x, 2, axis=0)
uj5u.com熱心網友回復:
你可以這樣做numpy.tile:
a = np.array([
[0, 6, 7, 9, 1],
[2, 4, 6, 2, 7]
])
b = np.tile(a,3).reshape(-1,a.shape[1])
print(b)
輸出:
[[0 6 7 9 1]
[0 6 7 9 1]
[0 6 7 9 1]
[2 4 6 2 7]
[2 4 6 2 7]
[2 4 6 2 7]]
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/450775.html
上一篇:如何修復IndexError:只有整數、切片(`:`)、省略號(`...`)、numpy.newaxis(`None`)和整數或布爾陣列是有效的索引
