从数组中的一个浮点中查找值

时间:2019-03-17 20:38:05

标签: python arrays

我有一个值数组,我想找到它在另一个值数组中的位置。例如,如果我有:

array1 = [1,2,3,4,5,6]
array2 = [2,6,3,4,1,5,.....]

我想找到数组1中每个元素在数组2中的位置,所以我希望它返回类似的内容

what_position = [4,0,2,3,5,1]

我尝试过这样的事情:

for i in range(len(array1)):
      what_position = array1[i].index(array[2])

但是我得到一个错误提示

'numpy.float64' object has no attribute 'index'

我想这意味着我不能在浮点数上使用.index。还有另一种方法可以解决这个问题。

3 个答案:

答案 0 :(得分:2)

np.intersect1d提供了另一种解决方案:

import numpy as np

array1 = [1,2,3,4,5,6]
array2 = [2,6,3,4,1,5]

np.intersect1d(array1, array2, return_indices=True)[2]

答案 1 :(得分:1)

列表理解有助于:

positions = [array2.index(item) for item in array1]

一个for循环,结果相同:

positions = []
for item in array1:
    positions.append(array2.index(item))

换句话说,您在列表而不是单个项目上调用index()

答案 2 :(得分:1)

如果array2中没有重复的元素,则可以使用以下解决方案。它应该比使用index()进行列表理解要快:

from operator import itemgetter
from itertools import count

array1 = [1, 2, 3, 4, 5, 6]
array2 = [2, 6, 3, 4, 1, 5, 7, 8]

itemgetter(*array1)(dict(zip(array2, count())))
# [4, 0, 2, 3, 5, 1]