我有两个numpy数组x和y
假设x = [0,1,1,1,3,4,5,5,5]和y = [0,2,3,4,2,1,3,4,5]
两个数组的长度是相同的,我正在寻找的坐标对肯定存在于数组中.
如何在这些数组中找到(a,b)的索引,其中a是x中的元素,b是y中的对应元素.例如,(1,4)的索引将是3:x和y的索引3处的元素分别是1和4.
解决方法:
In [16]: import numpy as np
In [17]: x = np.array([0, 1, 1, 1, 3, 4, 5, 5, 5])
In [18]: y = np.array([0, 2, 3, 4, 2, 1, 3, 4, 5])
In [19]: np.where(np.logical_and(x == 1, y == 4))[0]
Out[19]: array([3], dtype=int64)
numpy.logical_and允许您以元素方式执行两个numpy数组之间的逻辑AND操作.我们在这里做的是确定哪些位置包含x值为1且y值在相同的相应位置为4.那些满足这个要求的地方是真的. numpy.where确定满足此条件的数组中的位置. numpy.where实际上将条件为True的行和列位置分别作为两个元素的元组返回,但由于我们只考虑一个维度,因此只有第一个元组有效,这就是我们立即索引第一个元素的原因.元组.
输出是条件有效的numpy位置数组.您甚至可以进一步强制输出为索引列表以使事情更整洁和/或是否需要(感谢@EddoHintoso):
In [20]: list(np.where(np.logical_and(x == 1, y == 4))[0])
Out[20]: [3]
标签:python,arrays,numpy
来源: https://codeday.me/bug/20190724/1525694.html