在循环中附加到 numpy 数组

Nik*_*aij 6 python-3.x numpy-ndarray

我真的希望不要错过一些之前已经澄清过的东西,但我在这里找不到任何东西。

任务看起来很简单,但我失败了。我想在 for 循环中连续将一个 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)
Run Code Online (Sandbox Code Playgroud)

输出应为 ofc 类型<class 'numpy.ndarray'>,如下所示:

[[-1.  0.]
 [ 0.  0.]
 [-1. -1.]
 [ 1. -1.]
 [ 1.  1.]
 [ 0. -1.]
 [-1.  1.]
 [-1.  0.]
 [ 0. -1.]
 [ 1.  1.]]
Run Code Online (Sandbox Code Playgroud)

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

Fel*_*enk 6

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)
Run Code Online (Sandbox Code Playgroud)

问题之一是在 for 循环外部初始化的步骤变量的大小与内部每个步骤的大小不同。我改变了你初始化变量steps 的方式,通过在 for 循环之外创建你的第一步。这样,您的步骤变量已经具有匹配的大小。但是请注意,因此您需要在 for 循环中减少 1 次迭代。

此外,您希望更新每个 for 循环中的steps变量,而不是在其中创建新变量“ a ”。在您的代码中,您只会得到steps数组(永远不会改变)和最后一步。

  • @F。Trenk,在 for 循环内生成数据时如何做到这一点?例如, a = np.empty() for 循环 a=np.append(a, b) (2认同)