甲更合適的方法予有numpy的陣列開始用零,這樣的:設定在索引值與NumPy的
v = np.zeros((5, 5))
v
array([[ 0., 0., 0., 0., 0.],
[ 0., 0., 0., 0., 0.],
[ 0., 0., 0., 0., 0.],
[ 0., 0., 0., 0., 0.],
[ 0., 0., 0., 0., 0.]])
我也有一組陣列和idx1
的idx2
。
idx1
array([[0, 3],
[0, 4],
[1, 3],
[2, 4]])
idx2
array([[0, 1],
[0, 2],
[0, 4],
[1, 3]])
查看每對值作爲行和列索引。因此,例如,在idx1
中,第一對(0, 3)
將索引爲v[0, 3]
等等。
我想先在由idx1
指定1
指標設定值,然後通過idx2
指定0
所有索引。
此外,請注意,如果某個陣列中有一對(i, j)
,我想同時設置v[i, j]
和v[j, i]
。
我的最終結果變成:
array([[ 0., 0., 0., 1., 0.],
[ 0., 0., 0., 0., 0.],
[ 0., 0., 0., 0., 1.],
[ 1., 0., 0., 0., 0.],
[ 0., 0., 1., 0., 0.]])
我目前做實現這一目標:
def set_vals(x, i, j, v):
x[i, j] = x.T[i, j] = v
v = np.zeros((5, 5))
i1, j1 = idx1[:, 0], idx1[:, 1]
i2, j2 = idx2[:, 0], idx2[:, 1]
set_vals(v, i1, j1, 1)
set_vals(v, i2, j2, 0)
v # the result
然而,我認爲有可能是一個更好的辦法。我很想聽聽任何有關改進的想法/建議。謝謝!
您是否在尋求改進性能? 'v'總會被初始化爲零? – Divakar
@StefanPochmann對此感到抱歉。我忽略提及'我忘記提及如果在某個數組中有一對(i,j),我想同時設置v [i,j]和v [j,i]。編輯,在 –
@Divakar表現明智,我不認爲任何事情都可以打敗這一點,但我很想知道是否有可能。是的,在我的情況下,'v'總是被初始化爲0。 –