gpt4 book ai didi

python - 如何根据条件计算numpy数组的每个元素

转载 作者:太空宇宙 更新时间:2023-11-04 09:53:34 25 4
gpt4 key购买 nike

我有一个包含多个元素的单列 numpy 数组。我想编写一个函数来获取每个元素并评估它是否满足条件。然后根据结果,它应该使用方程式来计算一些东西。计算结果应与输入数组大小相同。

这是我想做的一个简单例子。 (实际代码会更复杂)。我知道为什么它不起作用,但似乎找不到解决方案。

import numpy as np
array1 = np.arange(1,11,1)

def test(array1):
value1 = 20
i = 0
value3 = array1[i]
while array1 > value3 and i < value1:
i =+ 1
value3 = array1[i]

test(array1)

我试图找到一个解决方案:

  • 我查看了 any() 和 all(),但这不是我需要的,因为我想分别查看每个元素。
  • 我查看了 numpy.where(),但它只返回满足条件的元素,因此改变了数组大小,这不是我想要的。

编辑:对于我的完整解决方案,Zulfiqaar 的 for 循环版本和 Siva Kowuru 显示的 where 函数都是可能的。由于 where 函数看起来更快更方便,我将其标记为已接受的答案。

最佳答案

您可以在 numpy.where(condition[, x, y]) 上添加可选参数以保持相同的数组大小。

当为True时,yield x,否则yield y

https://docs.scipy.org/doc/numpy/reference/generated/numpy.where.html


与@Zulfiqaar 的答案相比,解决方案是

np.where(array1 < 3, array1 ** 2, array1 / 3)

请注意,条件只是一个 bool 数组,因此您可以使用 binary operators 一次组合多个条件。 .例如与另一个数组进行比较:

array2 = np.random.randint(1, 11, 10)

>>> array2
Out[]: array([ 6, 1, 6, 2, 10, 4, 9, 10, 3, 3])

>>> np.where((array1 < 3) & (array1 > 5), array1 ** 2, array1 / 3)
Out[]:
array([ 0.33333333, 4. , 1. , 1.33333333, 1.66666667,
2. , 2.33333333, 2.66666667, 3. , 3.33333333])

关于python - 如何根据条件计算numpy数组的每个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46852462/

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