我们有一个包含重复项的数组x
和一个只接受没有重复项的一维数组的函数f()
。 我们需要f(x)
的结果,就好像函数可以接受重复值一样。
如果在将重复值传递给函数之前,我们已经将其移除,那么如何将重复的结果添加到函数返回的数组中呢?
import numpy as np
def f(x):
''' assume this function cannot accept duplicates '''
return -1 * x
x = np.array([1, 3, 5, 7, 7, 9, 9, 9, 11, 13, 13, 15, 17, 17, 19, 21, 21, 21, 23])
y = f(np.unique(x))
print(y) # [ -1 -3 -5 -7 -9 -11 -13 -15 -17 -19 -21 -23
# Needed: [ -1 -3 -5 -7 -7 -9 -9 -9 -11 -13 -13 -15 -17 -17 -19 -21 -21 -21 -23 ]
对其使用return_inverse
参数-
unq, tags = np.unique(x, return_inverse=True)
out = f(unq)[tags]
假设f
以元素方式工作。
虽然有点奇怪。。。
import numpy as np
def f(X):
return -1 * x
x = np.array([1, 3, 5, 7, 7, 9, 9, 9, 11, 13, 13, 15, 17, 17, 19, 21, 21, 21, 23])
y = f(np.unique(x))
print(y)
输出:
[ -1 -3 -5 -7 -7 -9 -9 -9 -11 -13 -13 -15 -17 -17 -19 -21 -21 -21 -23]