【问题标题】:Element-wise maximum with key带键的元素最大值
【发布时间】:2018-03-27 10:30:35
【问题描述】:

有没有更有效的方法来执行 element-wise 最大值 with key

import numpy as np
a = np.array([-2, 2, 4, 0])
b = np.array([-3,-5, 2, 0])
c = np.array([ 1, 1, 1, 1])

mxs = np.empty((4,))
for i in range(4):
    mxs[i] = max([a[i], b[i], c[i]], key=abs)

>>> mxs
array([-3., -5.,  4.,  1.])

不幸的是,numpy.maximum 不提供key 参数,因为如果能够做类似的事情就好了: np.maximum.reduce([a,b,c])

【问题讨论】:

  • 您只是对key=abs 案例感兴趣还是在寻找更通用的解决方案?
  • 主要用于abs 解决方案,但也很高兴看到更多通用解决方案。

标签: python numpy key max elementwise-operations


【解决方案1】:

你可以使用:

arr = np.array([a,b,c])
arr[np.argmax(np.abs(arr), axis=0), np.arange(arr.shape[1])]

【讨论】:

    【解决方案2】:

    而不是将关键函数作为绝对函数作为整数函数。


    代码

    import numpy as np
    a = np.array([-2, 2, 4, 0])
    b = np.array([-3,-5, 2, 0])
    c = np.array([ 1, 1, 1, 1])
    
    mxs = np.empty((4,))
    for i in range(4):
       mxs[i] = max([a[i], b[i], c[i]], key=int)
    
    print(mxs)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-07-21
      • 1970-01-01
      • 2018-07-07
      • 1970-01-01
      • 1970-01-01
      • 2016-07-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多