【问题标题】:how to change every value in a numpy array with more than one condition如何使用多个条件更改 numpy 数组中的每个值
【发布时间】:2020-01-29 07:57:46
【问题描述】:

我之前曾针对 1 个条件询问过一些更简单的问题,这是一个简单的答案,效果很好。 change every value in a numpy array with a condition

现在我正试图找到一种方法来处理两个条件。

 for j in range(5,45):
     # inter_data[(j*100) <= inter_data < ((j+1)*100)] = (j*100) + 50
     inter_data = np.where(((j + 1) * 100) > inter_data > (j * 100), (j * 100) + 50, inter_data)

我尝试使用相同的技术,但它不起作用。似乎这只能在一个条件下工作。

它在两种情况下给出以下错误

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

【问题讨论】:

标签: python arrays list numpy multiple-conditions


【解决方案1】:

试试:

inter_data = np.where((((j + 1) * 100) > inter_data) & (inter_data > (j * 100)), (j * 100) + 50, inter_data)

【讨论】:

    【解决方案2】:

    您可以使用逻辑和操作&amp; 来执行此操作,如下所示使用vectorizaion(不使用python循环)

    
    import numpy as np
    ar = np.arange(5,45)
    inter_data = np.arange(100, 100+40*100, 100)
    
    
    cond = (ar+1) * 100 > inter_data
    cond &= (ar) * 100 < inter_data
    
    np.where(cond, ar*100+50, inter_data)
    

    【讨论】:

      猜你喜欢
      • 2019-07-05
      • 1970-01-01
      • 2021-04-22
      • 1970-01-01
      • 2021-03-23
      • 2023-03-17
      • 1970-01-01
      • 2022-01-23
      • 2018-06-25
      相关资源
      最近更新 更多