首页 文章

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

提问于
浏览
0

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

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

谢谢

2 回答

  • 0

    如果您的形状是(1,8760),则在迭代中为x分配了8760个元素的数组,因为循环迭代包含一个大小为8760的元素的第一个轴 . 此外,我建议使用“where”函数而不是环:

    # 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

    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代码中执行此操作

相关问题