Afo*_*o_a 0 numpy numpy-ndarray
假设我有一个如下所示的数组:
a = np.array([0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0])
Run Code Online (Sandbox Code Playgroud)
我想用 1 填充 1 之间的值。所以这将是所需的输出:
a = np.array([0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0])
Run Code Online (Sandbox Code Playgroud)
我查看了这个答案,得到以下结果:
array([0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1])
Run Code Online (Sandbox Code Playgroud)
我确信这个答案非常接近我想要的输出。然而,尽管尝试了无数次,但我无法更改此代码以使其按照我想要的方式工作,因为我对 numpy 数组不太熟悉。任何帮助深表感谢!
尝试这个
b = ((a == 1).cumsum() % 2) | a
Out[10]:
array([0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0], dtype=int32)
Run Code Online (Sandbox Code Playgroud)
来自 @Paul Panzer:使用ufunc.accumulatewithbitwise_xor
b = np.bitwise_xor.accumulate(a)|a
Run Code Online (Sandbox Code Playgroud)