gpt4 book ai didi

python - 在 Numpy Python 中修改数组 block

转载 作者:行者123 更新时间:2023-12-02 02:23:27 42 4
gpt4 key购买 nike

我想编写一个函数,如果数组等于或小于 0,它将用 0 替换该索引之后(包括)的值。numbers 的第 7 个元素小于0 是 -1,因此包括第 7 个元素到第 10 个元素值的元素将被 0 替换。我如何配置 np.where 函数,使其给出预期的结果结果值?

示例输入:

numbers = np.array([87., 4., 4.1,  8.5, 10 , 20, 22.3, -1., 1., 60., -4.])

预期输出:

[87., 4., 4.1,  8.5, 10 , 20, 22.3, 0., 0., 0., 0.]

最佳答案

您可以使用argmax找出第一个小于0的索引,然后将该索引之后的所有值修改为0:

a = np.array([87. ,4., 4.1,  8.5, 10 , 20, 22.3, -1, 1, 60, -4])
if (a <= 0).any(): a[(a <= 0).argmax():] = 0

a
# [87. 4. 4.1 8.5 10. 20. 22.3 0. 0. 0. 0. ]

或者更有效的是,您可以仅检查候选索引下的值:

def zero_after_native(a):
candidate = (a <= 0).argmax()
if a[candidate] <= 0:
a[candidate:] = 0

a = np.array([87. ,4., 4.1, 8.5, 10 , 20, 22.3, -1, 1, 60, -4])
zero_after_native(a)

a
# [87. 4. 4.1 8.5 10. 20. 22.3 0. 0. 0. 0. ]

关于python - 在 Numpy Python 中修改数组 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66095008/

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