我已经按照下面所示的方式创建了一个数组;它表示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])
返回以下内容:
AttributeError: 'numpy.ndarray' object has no attribute 'index'
我这么做的原因是为了在for循环中扩展一个列表,其中包含一个坐标对的索引。
例如
v = []
for A in R:
v.append(R.index(A))
我只是不知道为什么索引函数不起作用,而且似乎找不到绕过它的方法。
我对编程还不熟悉,所以如果这看起来像是胡说八道的话,请原谅。
通过将内部数组(坐标)转换为元组,可以获得所需的结果。
然后可以使用R.index((number1,number2))找到元组的索引
希望这有帮助!
[编辑]为了解释上面代码中发生的事情,map函数遍历(迭代)数组R中的项,并用lambda函数的返回结果替换每个项。 所以它就相当于这样的东西:
所以它把每一个项目都拿出来做点什么,把它放回列表中。我意识到它可能并没有像我想的那样做(返回(x)似乎没有将正则数组更改为元组),但它确实有助于解决您的问题,因为我认为通过遍历它,python可能会从numpy数组中创建一个正则数组。
要真正转换成元组,下面的代码应该可以工作
(给https://stackoverflow.com/a/10016379/2612012的学分)
index()
是list
类型的方法,而不是numpy.array
类型的方法。尝试:其中
x
是例如R
的第三个条目。这首先将数组转换为list
,然后可以使用index
;)Numpy数组不是索引函数,原因有很多。不过,我觉得你想要的是不同的东西。
例如,您提到的代码:
只是(假设R目前有唯一的行):
但是,我认为您可能需要内置函数
enumerate
。E、 g例如,假设我们想知道每行的和大于1的印度。
一种方法是:
但是,如果您使用的是numpy数组,numpy还提供了其他方法。例如,与上述代码等效的是:
如果您刚刚开始使用python,那么在过分担心使用numpy的最佳方式之前,请先重点理解第一个示例。请注意,numpy数组的行为与列表非常不同。
相关问题 更多 >
编程相关推荐