带键的逐元素最大值
Element-wise maximum 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])
您可以使用:
arr = np.array([a,b,c])
arr[np.argmax(np.abs(arr), axis=0), np.arange(arr.shape[1])]
与其将键函数作为绝对函数,不如将其作为整数函数。
代码
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)
是否有更有效的方法来执行元素方面最大值与键?
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])
您可以使用:
arr = np.array([a,b,c])
arr[np.argmax(np.abs(arr), axis=0), np.arange(arr.shape[1])]
与其将键函数作为绝对函数,不如将其作为整数函数。
代码
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)