2

有没有更有效的方法来使用 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])

4

2 回答 2

3

您可以使用:

arr = np.array([a,b,c])
arr[np.argmax(np.abs(arr), axis=0), np.arange(arr.shape[1])]
于 2018-03-27T10:41:42.660 回答
0

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


代码

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)
于 2018-03-27T10:47:15.040 回答