在numpy数组中的值之间的计算

时间:2016-01-04 18:53:10

标签: python arrays numpy between

python的新手,需要一些帮助。我有一个numpy数组元组,形状为(1,8760),每个8760位置都有数字。我一直在尝试计算值是否介于-2和2之间,然后我的新变量将为0,否则只需在新变量中保持相同的值。这是我尝试过的以及其他许多内容,但我可能完全不了解阵列概念。

for x in flow:
    if 2 > x < -2:
        lflow = 0
    else:
        lflow = flow

我收到此错误:

  

ValueError:具有多个元素的数组的真值是不明确的。使用a.any()或a.all()

从我读到的那些函数给我一个真或假,但我想计算价值而不是告诉我它是否匹配。请帮忙。

由于

2 个答案:

答案 0 :(得分:1)

如果你的形状是(1,8760),你的迭代中为x分配了8760个元素的数组,因为循环迭代包含一个大小为8760的元素的第一个轴。 此外,我建议使用&#34;其中&#34;函数而不是循环:

# create a random array with 100 values in the range [-5,5]
a = numpy.random.random(100)*10 - 5
# return an array with all elements within that range set to 0
print numpy.where((a < -2) | (a > 2), a, 0)

答案 1 :(得分:0)

Numpy使用布尔掩码来批量选择或赋值给数组。例如,给定数组

A = np.array([-3,-1,-2,0,1,5,2])

此掩码表示A中小于-2或大于2的所有值

mask = (A < -2) | (A > 2)

然后用它将这些值分配给0

A[mask] = 0

这比在python中使用常规循环快得多,因为numpy将在c或fortran代码中执行此操作