在循环中向numpy数组追加数据

问题描述 投票:0回答:1

我真的希望不要遗漏了什么,之前已经说明了,但我在这里找不到东西。

这个任务看起来很简单,但是我失败了,我想在for-loop中连续追加一个numpy数组到另一个数组。我想在for-loop中不断地将一个numpy数组追加到另一个数组中。

step_n = 10
steps = np.empty([step_n,1])

for n in range(step_n):
    step = np.random.choice([-1, 0, 1], size=(1,2))
    #steps.append(step) -> if would be lists, I would do it like that
    a = np.append(steps,step)
    #something will be checked after each n

print(a)

输出应该是ofc类型的 <class 'numpy.ndarray'> 并且看起来像。

[[-1.  0.]
 [ 0.  0.]
 [-1. -1.]
 [ 1. -1.]
 [ 1.  1.]
 [ 0. -1.]
 [-1.  1.]
 [-1.  0.]
 [ 0. -1.]
 [ 1.  1.]]

但是由于某些原因(很可能是显而易见的),代码失败了。谁能给我一个提示?

python-3.x numpy-ndarray
1个回答
1
投票
import numpy as np

step_n = 10
steps = np.random.choice([-1, 0, 1], size=(1,2))
for n in range(step_n-1):
    step = np.random.choice([-1, 0, 1], size=(1,2))
    print(steps)
    steps = np.append(steps, step, axis=0)
    #something will be checked after each n

print(steps)

其中一个问题是,你的 步骤 变量,在for循环外被初始化 大小不一 而不是里面的每一步。我改变了你初始化变量 步骤通过在for循环外创建第一步。这样,你的 步骤 变量已经有了匹配的大小。但请注意,你需要在for循环中减少1次迭代,因为这一点。

另外,你想更新 步骤 变量,而不是在每个for循环中创建一个新的变量"a"里面。在你的代码中,你最终会得到的是 步骤 数组(永远不会改变),只有最后一步。

© www.soinside.com 2019 - 2024. All rights reserved.