我真的希望不要遗漏了什么,之前已经说明了,但我在这里找不到东西。
这个任务看起来很简单,但是我失败了,我想在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.]]
但是由于某些原因(很可能是显而易见的),代码失败了。谁能给我一个提示?
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"里面。在你的代码中,你最终会得到的是 步骤 数组(永远不会改变),只有最后一步。