如何创建数组索引数组?

时间:2014-05-03 16:29:43

标签: python arrays numpy indexing

我试图在另一个数组中创建一个包含多个元素的数组,但是在循环中附加到数组会给我太多数字。

 xaxis = np.zeros(len(newdates))
 for i in newdates:
    xaxis = np.append(xaxis, i)

而不是像我想要的那样[1,2,3,4,.....]它给了我一个[1,1,2,1,2,3,1,2]的数组,3,4-,.....]。

这似乎是一个简单的问题,但由于某种原因它让我感到很不舒服。

4 个答案:

答案 0 :(得分:1)

你可以完全避免使用类似的东西(假设len(newdates)为3):

>>> np.array(range(1, len(newdates)+1))
array([1, 2, 3])

答案 1 :(得分:1)

您将i值(newdates中的值)附加到xaxis列表,即[0] * len(newdates)。下面的代码说明了这一点:

>>> import numpy as np
>>> newdates = range(10)
>>> xaxis = np.zeros(len(newdates))
>>> for i in newdates:
...     xaxis = np.append(xaxis, i)
... 
>>> print xaxis
[ 0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  1.  2.  3.  4.  5.  6.  7.
  8.  9.]

我不确定你想做什么,但我认为可以通过以下方式轻松解决:

xaxis = range(len(newdates))

答案 2 :(得分:0)

而不是

xaxis = np.append(xaxis, i)

尝试使用扩展功能

np.extend(i)

答案 3 :(得分:0)

虽然有人给你一个更好的方法,但我觉得你也应该看到你做错了什么

for foo in bar:

遍历bar的所有元素,并在for循环中调用它们foo。所以,如果我有

newdates = [10,9,8,7,6,5,4,3,2,1]

我做了你的代码

xaxis = np.zeros(len(newdates))
 for i in newdates:
    xaxis = np.append(xaxis, i)

xaxis将是newdates的长度为0,然后是newdates中的数字,因为在循环i内对应于newdates