如何在数组中查找数组的索引

use*_*480 3 python arrays numpy

我以下面显示的方式创建了一个数组; 代表3对坐标.我的问题是我似乎无法找到数组中特定坐标对的索引.

import numpy as np

R = np.random.uniform(size=(3,2))

R

Out[5]: 
array([[ 0.57150157,  0.46611662],
   [ 0.37897719,  0.77653461],
   [ 0.73994281,  0.7816987 ]])

R.index([ 0.57150157,  0.46611662])
Run Code Online (Sandbox Code Playgroud)

返回以下内容:

AttributeError: 'numpy.ndarray' object has no attribute 'index'
Run Code Online (Sandbox Code Playgroud)

我试图这样做的原因是我可以在一个for循环中扩展一个带有坐标对的索引的列表.

例如

v = []
for A in R:
v.append(R.index(A)) 
Run Code Online (Sandbox Code Playgroud)

我只是不确定为什么索引功能不起作用,似乎无法找到解决方法.

我是编程的新手,请原谅我,如果这看起来像废话.

alt*_*are 6

index()是一种类型的方法list,而不是numpy.array.尝试:

R.tolist().index(x)
Run Code Online (Sandbox Code Playgroud)

x例如,在哪里,第三个条目R.这首先将您的数组转换为a list,然后您可以使用index;)


Cli*_*ell 3

您可以通过将内部数组(坐标)转换为元组来实现所需的结果。

R = map(lambda x: (x), R);
Run Code Online (Sandbox Code Playgroud)

然后你可以使用 R.index((number1, number2)); 找到元组的索引。

希望这可以帮助!

[编辑] 为了解释上面代码中发生的情况,map 函数遍历(迭代)数组 R 中的项目,并为每一项将其替换为 lambda 函数的返回结果。所以它相当于这样的东西:

def someFunction(x):
  return (x)

for x in range(0, len(R)):
  R[x] = someFunction(R[x])
Run Code Online (Sandbox Code Playgroud)

因此,它会获取每个项目并对其执行某些操作,然后将其放回列表中。我意识到它实际上可能不会做我想象的那样(返回 (x) 似乎没有将常规数组更改为元组),但它确实对您的情况有帮助,因为我认为通过迭代它 python 可能会创建一个常规数组numpy 数组中的数组。

要实际转换为元组,以下代码应该有效

R = map(tuple, R) 
Run Code Online (Sandbox Code Playgroud)

(归功于/sf/answers/701146561/