gpt4 book ai didi

python - Numpy:在 2D bool 数组中逐项快速计算 True 实例

转载 作者:行者123 更新时间:2023-11-28 16:29:37 25 4
gpt4 key购买 nike

我有一个二维 bool 数组,例如:

[[False, True, True],
[True, False, True],
[True, False, False],
[True, True, True]]

对于数组中的每一行,我想计算 True 的实例,并创建一个与原始数组形状相同的新的逐项数组,其中每个条目是该行中所有先前 True 实例的总和.对于上面的例子,我想要的输出是:

[[0, 0, 1],
[0, 1, 1],
[0, 1, 1],
[0, 1, 2]]

有没有一种方法可以在 Numpy 中快速执行此操作,而不是像这样检查数组中的每个项目:

boolarr = np.array([[0, 1, 1], [1, 0, 1], [1, 0, 0], [1, 1, 1]], dtype=np.bool)

newarr = np.zeros(boolarr.shape)

for i, row in enumerate(boolarr):
for index, item in enumerate(row):
if item:
newarr[i][index+1:] += 1

我的阵列足够大 (40 x 1260),速度是一个因素,因为这需要重复多次。

谢谢。

最佳答案

cumsum 是你的 friend !它是累积总和的缩写,你可以给它一个“轴”来处理,在你的情况下尝试运行:

np.cumsum(boolarr,axis=1) - boolarr

减法只是减去“当前”值。

关于python - Numpy:在 2D bool 数组中逐项快速计算 True 实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33255532/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com