【问题标题】:Adding numpy arrays to numpy array in a for loop在 for 循环中将 numpy 数组添加到 numpy 数组
【发布时间】:2021-07-31 14:58:53
【问题描述】:

我尝试在 for 循环中将 numpy 数组(numpy_array 的倍数)添加到一个列表中,其中每个 numpy 数组可能具有不同的形状(但假设每个数组都有 (10, 64))。所以每个数组有 64 列,并且可能有尽可能多的行。我所做的如下:

l_arr = numpy_array[indices, :]
list_arr.append(l_arr.tolist())

那么,

numpy_from_list= np.array(list_arr)

但这似乎增加了额外的维度。例如,如果我将 3 个大小为 (10, 64) 的 numpy 数组添加到列表中,然后将列表转换为 numpy.我会得到(3, 10, 64),但我想要(30, 64)

for i in range(3):
    l_arr = numpy_array[indices, :]
    list_arr.append(l_arr.tolist())
    numpy_from_list= np.array(list_arr)

你能帮帮我吗?

【问题讨论】:

  • 尝试使用numpy的np.stack()函数
  • @sehan2。谢谢,但我得到了相同的结果。

标签: numpy


【解决方案1】:

给你:

arrays = [np.random.randint(0,10,(10, 64)) for i in range(3)]
res = np.vstack(arrays)

【讨论】:

  • 在运行循环时,我如何设置一个条件,例如堆叠数组的大小不应超过 30?我做了你的代码,它可以工作,但它有问题,因为列表大小为 3,实际数组大小为 30 x 64。所以我不能设置一个条件来根据列表大小停止循环,如while len(list_numpy_arryas) <=30:
  • 我迭代地添加数组,而不是像上面的 arrays 那样在单个调用中添加。
  • 您的数组必须具有兼容的尺寸才能堆叠它们
  • 不幸的是,它们不兼容。一个可能有 (10, 64) 而另一个可能有 (3, 64) 等等。所以我首先将它们添加到列表中,完成后我像你一样堆叠它们,但问题是我想在添加后停止来自所有数组的总共 (64, 64) 个。你能帮我解决这个问题吗?
  • 查看“列表推导”或像上面那样使用 for 循环
猜你喜欢
  • 2021-08-10
  • 1970-01-01
  • 2022-01-25
  • 2020-09-14
  • 1970-01-01
  • 2019-09-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多