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)
我只是不确定为什么索引功能不起作用,似乎无法找到解决方法.
我是编程的新手,请原谅我,如果这看起来像废话.
index()是一种类型的方法list,而不是numpy.array.尝试:
R.tolist().index(x)
Run Code Online (Sandbox Code Playgroud)
x例如,在哪里,第三个条目R.这首先将您的数组转换为a list,然后您可以使用index;)
您可以通过将内部数组(坐标)转换为元组来实现所需的结果。
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)