提问者:小点点

Numpy删除重复项,应用函数,然后将其添加回来


我们有一个包含重复项的数组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 ]


共2个答案

匿名用户

对其使用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]

相关问题