【问题标题】:Numpy array thresholding accelerationNumpy 数组阈值加速
【发布时间】:2018-04-21 02:18:54
【问题描述】:

我想使用条件从另一个 np.array 构造一个 np.array。对于每个值,如果满足条件,则必须应用一个操作,否则必须应用另一个操作。由于转换为列表并返回列表,我编写的计算很难看。通过不转换为列表,可以提高速度吗?

THR = 1.0
THR_REZ = 1.0 / THR**2

def thresholded_function(x):
  if x < THR:
    return THR_REZ
  else:
    return 1.0 / x**2

rad2 = .....some_np_array.....
rez = np.array([threshold(r2) for r2 in rad2])

【问题讨论】:

    标签: python arrays numpy threshold


    【解决方案1】:

    使用np.where -

    np.where(x < THR, THR_REZ, 1.0/x**2) # x is input array
    

    示例运行 -

    In [267]: x = np.array([3,7,2,1,8])
    
    In [268]: THR, THR_REZ = 5, 0
    
    In [269]: np.where(x < THR, THR_REZ, 1.0/x**2)
    Out[269]: array([ 0.        ,  0.02040816,  0.        ,  0.        ,  0.015625  ])
    
    In [270]: def thresholded_function(x, THR, THR_REZ):
         ...:   if x < THR:
         ...:     return THR_REZ
         ...:   else:
         ...:     return 1.0 / x**2
    
    In [272]: [thresholded_function(i,THR, THR_REZ) for i in x]
    Out[272]: [0, 0.02040816326530612, 0, 0, 0.015625]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-12-26
      • 2017-07-10
      • 2011-04-23
      • 1970-01-01
      • 2017-09-01
      • 2020-09-01
      • 2011-10-03
      相关资源
      最近更新 更多