python - 如何获取属于所有 numpy 数组的项目?

标签 python arrays numpy indexing compare

我需要一些类似于 numpy.in1d() 函数的东西,我的任务是拥有超过 2 个数组的项目列表。例如我有 3 个数组:

a = np.array((1,2,5,6,12))
b = np.array((1,3,7,8,5,14,19))
c = np.array((2,6,9,5,1,22))

结果应该是[1, 5]

有没有比使用 np.in1d 的纯循环更快的方法首先与所有其他方法进行比较?一些数组联合或一些智能子索引?

最佳答案

您可以使用 np.intersect1d。例如:

In [15]: np.intersect1d(a, np.intersect1d(b, c))
Out[15]: array([1, 5])

或使用reduce:

In [16]: reduce(np.intersect1d, (a, b, c))
Out[16]: array([1, 5])

如果您知道每个数组中的元素都是唯一的,请使用参数 assume_unique=True:

In [21]: reduce(lambda x, y: np.intersect1d(x, y, assume_unique=True), (a, b, c))
Out[21]: array([1, 5])

关于python - 如何获取属于所有 numpy 数组的项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17766145/

相关文章:

python - 使用 matplotlib 和子图绘制多个条形图

php - array_map 在类里面不起作用

JAVA-从txt文件中读取整数并计算整数

python - python numpy 数组的结构

python - 在 Python 和 NumPy 中量化正态分布 float

python - 在 Django REST Framework (DRF) 中正确使用 "callable default function"

python - 与 python 的随机集成

python - 直接在创建的类上调用函数 'list(...)'

Java空点异常错误

python - 在Python中使用ODEINT求解微分方程