我有一個這樣的陣列:這是一個最近的問題的擴展,我問其他地方在這里。我有一個像這樣的 numpy 陣列:
data = np.array([
[1,2,3],
[1,2,3],
[1,2,101],
[4,5,111],
[4,5,6],
[4,5,6],
[4,5,101],
[4,5,112],
[4,5,6],
])
在第三列中,如果下一個是101AND 如果當前是,我希望用 10001 替換該值6。這將導致這樣的陣列:
data = np.array([
[1,2,3],
[1,2,3],
[1,2,101],
[4,5,111],
[4,5,6],
[4,5,10001],
[4,5,101],
[4,5,112],
[4,5,6],
])
對此的任何幫助將不勝感激!謝謝!
uj5u.com熱心網友回復:
一種使用方式numpy.roll:
s = data[:, 2]
data[np.logical_and(s == 6, np.roll(s, -1) == 101), 2] = 10001
輸出:
array([[ 1, 2, 3],
[ 1, 2, 3],
[ 1, 2, 101],
[ 4, 5, 111],
[ 4, 5, 6],
[ 4, 5, 10001],
[ 4, 5, 101],
[ 4, 5, 112],
[ 4, 5, 6]])
uj5u.com熱心網友回復:
與此同時,我還提出了一個可行的解決方案:
data[
(data[:,2] == 6)
&
(np.roll(data[:,2]==101,-1,0)),2
] = 10001
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/370325.html
下一篇:按值和索引配對兩個一維陣列
