我试图在另一个数组中创建一个包含多个元素的数组,但是在循环中附加到数组会给我太多数字。
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-,.....]。
这似乎是一个简单的问题,但由于某种原因它让我感到很不舒服。
答案 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