我有一个像这样的numpy二进制数组:
Array A = [1, 1, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0]
我想计算每个1的左边有多少个0,然后在另一个数组中返回它,这个数组在这个例子中是这样的:
^{pr2}$前两个1在左边没有0,所以数组的前两个数字是0等。。。在
我知道首先我必须启动一个数组,数组中有1个:
def give_zeros(binary_array):
binary_array = np.asarray(binary_array)
nb_zeros = np.zeros(binary_array.sum())
return nb_zeros
但我不知道怎么数到零。我应该用'nditer'在for循环中迭代吗?它似乎没有效率,因为我必须在非常大的数组上运行这个函数。在
你有什么想法吗? 谢谢您。在
这是一个向量化的方法,它从
1s
的索引中区分范围数组-样本运行-
^{pr2}$运行时测试
对于计时,让我们将给定样本平铺大量的时间和矢量化方法-
以非矢量化方式:
有关矢量化解决方案,请参见@Divakar的答案:
在} 找到非零索引:
^{pr2}$numpy
中,首先用^{然后用索引长度的范围数组减去:
代码
您可以使用:
或者:
^{pr2}$如果
A
是bool数组。在解释
A == 0
是一个布尔数组,对于每个0
,它是True
:您可以使用^{} 来计算
True
的数目:您只需要
A > 0
中的值:完成了!在
相关问题 更多 >
编程相关推荐