gpt4 book ai didi

python - 可以在 python 中向量化这个数组操作吗?

转载 作者:行者123 更新时间:2023-11-30 22:41:42 25 4
gpt4 key购买 nike

作为 Python 初学者,我很难理解矢量化“for”循环。我有一个 2D numpy 数组,仅包含两个值 -1 和 1。对于每一列和行,我想执行以下操作:将第一次遇到 1 之前遇到的所有 -1 值设置为 0。这可以矢量化吗?即使没有崩溃,如果行/列中没有 1,因此整个行/列将被设置为 0?

最佳答案

这是一种矢量化方法 -

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]])

关于python - 可以在 python 中向量化这个数组操作吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42411293/

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