Python 如何在函数输出中获取唯一值列表

Python 如何在函数输出中获取唯一值列表,python,numpy,Python,Numpy,假设我有这样一个函数: def function(a,b): for x in np.nditer(a): dAB = x-b pred = np.ceil([dAB+b*2]) print(pred) 及 我的输出是: function(array1,array2) [[5. 6. 7. 8. 9.]] [[ 6. 7. 8. 9. 10.]] [[ 7. 8. 9. 10. 11.]] [[ 8. 9. 10. 11.

假设我有这样一个函数:

def function(a,b):
    for x in np.nditer(a):
        dAB = x-b
        pred = np.ceil([dAB+b*2])
        print(pred)

我的输出是:

function(array1,array2)

[[5. 6. 7. 8. 9.]]
[[ 6.  7.  8.  9. 10.]]
[[ 7.  8.  9. 10. 11.]]
[[ 8.  9. 10. 11. 12.]]
[[ 9. 10. 11. 12. 13.]]
如何获得如下输出:

function(array1,array2)

array([5,6,7,8,9,10,11,12,13])
我想要的是跨数组获取所有唯一值并将其放入一个数组中。

只需使用:

将numpy作为np导入 def功能A,b: res=设置 对于np.nditera中的x: dAB=x-b pred=np.ceildAB+b*2 res.updatepred 返回np.arrayres 前

您可以使用np.unique:

输出:

array([ 5.,  6.,  7.,  8.,  9., 10., 11., 12., 13.])
您可以直接将array1和array2与以下各项进行比较:

In [249]: np.ceil((array1[:,None]-array2)+array2*2)                                                                  
Out[249]: 
array([[ 5.,  6.,  7.,  8.,  9.],
       [ 6.,  7.,  8.,  9., 10.],
       [ 7.,  8.,  9., 10., 11.],
       [ 8.,  9., 10., 11., 12.],
       [ 9., 10., 11., 12., 13.]])
并从中获得唯一值:

In [250]: np.unique(np.ceil((array1[:,None]-array2)+array2*2))                                                       
Out[250]: array([ 5.,  6.,  7.,  8.,  9., 10., 11., 12., 13.])

太神了谢谢:你能澄清问题的具体内容吗?这是否回答了你的问题?
array([ 5.,  6.,  7.,  8.,  9., 10., 11., 12., 13.])
In [249]: np.ceil((array1[:,None]-array2)+array2*2)                                                                  
Out[249]: 
array([[ 5.,  6.,  7.,  8.,  9.],
       [ 6.,  7.,  8.,  9., 10.],
       [ 7.,  8.,  9., 10., 11.],
       [ 8.,  9., 10., 11., 12.],
       [ 9., 10., 11., 12., 13.]])
In [250]: np.unique(np.ceil((array1[:,None]-array2)+array2*2))                                                       
Out[250]: array([ 5.,  6.,  7.,  8.,  9., 10., 11., 12., 13.])