我正在嘗試刪除列表“a”中包含的多個(gè)二維數(shù)組中包含一個(gè)或更少非零元素的所有行。當(dāng)我在 'i' 循環(huán)之外運(yùn)行它時(shí),此方法有效,但作為一個(gè)整體無(wú)效。我知道我不能刪除我正在迭代的行,但我相信在這種情況下我不會(huì)這樣做,因?yàn)槲抑皇莿h除包含在 a 中的數(shù)組中的行,而不是數(shù)組本身。for i in range(len(a)): del_idx=[] for j in range(len(a[i])): nonzero=np.nonzero(a[i][j]) nonzero_len=len(nonzero[0]) #because np.nonzero outputs a tuple if nonzero_len<=1: del_idx.append(j) else: continue np.delete(a[i],(del_idx),axis=0)有誰(shuí)知道這里發(fā)生了什么?如果這真的不起作用,如何在不使用循環(huán)的情況下刪除這些元素?這是 Python 2.7謝謝!
2 回答

慕的地6264312
TA貢獻(xiàn)1817條經(jīng)驗(yàn) 獲得超6個(gè)贊
for當(dāng)矢量化操作可用時(shí),您應(yīng)該致力于避免NumPy 循環(huán)。例如,在這里,您可以使用布爾索引:
import numpy as np
np.random.seed(0)
A = np.random.randint(0, 2, (10, 3))
res = A[(A != 0).sum(1) > 1]
array([[0, 1, 1],
[0, 1, 1],
[1, 1, 1],
[1, 1, 0],
[1, 1, 0],
[0, 1, 1],
[1, 1, 0]])
可以對(duì)數(shù)組列表中的每個(gè)數(shù)組應(yīng)用相同的邏輯。
添加回答
舉報(bào)
0/150
提交
取消