首页 > 解决方案 > 用python遍历一个二维数组

问题描述

我想将点存储在一个数组中,但我不确定如何遍历它。

x = np.dot(weights, corners)
x_points = np.zeros([100, 2])
for i in range(101):
    x_points = (x + corners[np.random.randint(3)]) / 2
    x = x_points

我试图像这样迭代我的数组:

x = np.dot(weights, corners)
x_points = np.zeros([100, 2])
for i in range(101):
    x_points[i:,] = (x + corners[np.random.randint(3)]) / 2
    x = x_points

我如何将每个点存储在我的数组中?

标签: pythonarrays

解决方案


您的 for 循环旨在迭代您的点数,但您从未专门从原始x数组中选择第 i 行来处理;相反,您只需在每次迭代中使用整个数组。这是你应该做的:

for i in range(101):
    x_points[i,:] = (x[i,:] + ...) / 2

(请注意,如果您愿意,您甚至可以省略第二个索引:x[i]与 相同x[i,:]。)

此外,您为存储在x_points数组中的索引是错误的。我假设你打算x_points[i,:]像我上面那样写,而不是x_points[i:,]. 后者沿第一个轴将数组从第 i 行切到末尾,因此您的代码实际上一次修改的不止一行x_points

最后,我不明白您为什么要x = x_points在每次循环迭代中分配。这样,在循环第一次运行后,您的原始x数组就不再存在了。如果要“重命名” finalized x_points,则需要将此行放在 for 循环之后。


推荐阅读