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()
从我读到的那些函数给我一个真或假,但我想计算价值而不是告诉我它是否匹配。请帮忙。
由于
答案 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代码中执行此操作