我希望使用哈希值来获取唯一向量的索引(对于矩阵而言,这是有效的),但是np.intersect1d不会给出索引,它只会给出值。另一方面,np.in1d确实提供了索引,但不是唯一的索引。我将一个字典压缩成zip对象来使其工作,但它似乎不是最有效的方法。我刚开始学习Python,因此正在尝试查看是否有更好的方法来完成此操作。感谢您的帮助!
代码:
代码:
import numpy as np
import hashlib
x=np.array([[1, 2, 3],[1, 2, 3], [4, 5, 6], [7, 8, 9]])
y=np.array([[4, 5, 6], [7, 8, 9],[1, 2, 3]])
xhash=[hashlib.sha1(row).digest() for row in x]
yhash=[hashlib.sha1(row).digest() for row in y]
z=np.intersect1d(xhash,yhash)
idx=list(range(len(xhash)))
d=dict(zip(xhash,idx))
unique_idx=[d[i] for i in z] #is there a better way to get this or boolean array
print(unique_idx)
uniques=np.array([x[i] for i in unique_idx])
print(uniques)
输出:
>>> [2, 3, 1]
[[4 5 6]
[7 8 9]
[1 2 3]]
我遇到了类似的问题,使用np.unique()函数时它没有返回任何索引。
answers posted to this question
获取行索引,然后使用这些索引在第一个数组中进行索引以获得所需的输出。 - Divakar