1
Python中的初學者在這裏,我很難將矢量化'for'循環。 我有一個二維numpy數組,只包含兩個值-1和1.對於每一列和行,我想要做以下操作:設置在第一次遇到1之前遇到的所有-1值爲0 可以被矢量化?即使沒有崩潰,如果行/列中沒有1,因此整個行/列將被設置爲0?可能在python中矢量化這個數組操作?
Python中的初學者在這裏,我很難將矢量化'for'循環。 我有一個二維numpy數組,只包含兩個值-1和1.對於每一列和行,我想要做以下操作:設置在第一次遇到1之前遇到的所有-1值爲0 可以被矢量化?即使沒有崩潰,如果行/列中沒有1,因此整個行/列將被設置爲0?可能在python中矢量化這個數組操作?
這裏有一個量化的方法 -
mask = a==1
a[~np.maximum.accumulate(mask,axis=0)] = 0
a[~np.maximum.accumulate(mask,axis=1)] = 0
採樣運行 -
In [39]: a
Out[39]:
array([[ 1, -1, 1, -1, -1],
[ 1, 1, -1, 1, -1],
[-1, 1, -1, 1, -1],
[ 1, -1, -1, -1, -1]])
In [40]: mask = a==1
In [41]: a[~np.maximum.accumulate(mask,axis=0)] = 0
In [42]: a[~np.maximum.accumulate(mask,axis=1)] = 0
In [43]: a
Out[43]:
array([[ 1, 0, 1, 0, 0],
[ 1, 1, -1, 1, 0],
[ 0, 1, -1, 1, 0],
[ 1, -1, -1, -1, 0]])
非常好的解決方案,非常感謝! – Adrien
你能給一些示例輸入和輸出? – Eric