我有一個給定的 2d np-array 并且想要復制每個例如第 3 行和第 3 列。
基本上,如果我有一個 np 陣列
a = np.array([
[1, 2, 3, 1, 2, 3],
[2, 3, 4, 2, 3, 4],
[3, 4, 5, 3, 4, 5],
[4, 5, 6, 4, 5, 6]
])
我想生產:
b = np.array([
[1, 2, 3, 3, 1, 2, 3, 3],
[2, 3, 4, 4, 2, 3, 4, 4],
[3, 4, 5, 5, 3, 4, 5, 5],
[3, 4, 5, 5, 3, 4, 5, 5],
[4, 5, 6, 6, 4, 5, 6, 6]
])
我怎么能那樣做?
uj5u.com熱心網友回復:
行
您可以使用算術識別第 N 行,然后將其復制np.repeat:
N = 3
out = np.repeat(a, (np.arange(a.shape[0])%N == (N-1)) 1, axis=0)
輸出:
array([[1, 2, 3, 1, 2, 3],
[2, 3, 4, 2, 3, 4],
[3, 4, 5, 3, 4, 5],
[3, 4, 5, 3, 4, 5],
[4, 5, 6, 4, 5, 6]])
中間的:
(np.arange(a.shape[0])%N == (N-1)) 1
# array([1, 1, 2, 1])
行和列
兩個維度上的相同機制:
N = 3
rows = (np.arange(a.shape[0])%N == (N-1)) 1
# array([1, 1, 2, 1])
cols = (np.arange(a.shape[1])%N == (N-1)) 1
# array([1, 1, 2, 1, 1, 2])
out = np.repeat(np.repeat(a, rows, axis=0), cols, axis=1)
輸出:
array([[1, 2, 3, 3, 1, 2, 3, 3],
[2, 3, 4, 4, 2, 3, 4, 4],
[3, 4, 5, 5, 3, 4, 5, 5],
[3, 4, 5, 5, 3, 4, 5, 5],
[4, 5, 6, 6, 4, 5, 6, 6]])
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/533774.html
標籤:Python数组麻木的
