【问题标题】:How to append two numpy arrays if a for loop after loading data?如果加载数据后出现for循环,如何附加两个numpy数组?
【发布时间】:2019-01-30 16:20:03
【问题描述】:

我有两个 numpy 数组。然后我想沿零轴附加。如果我使用 np.append 命令,它需要两个参数。而以下代码加载第一个数组,然后加载第二个数组。在这种情况下如何实现 np.append 命令?我阅读了不同的命令,例如 np.concatenate 和 np.vstack,但我不知道如何在 for 循环中实现它。有人可以指导我吗?

`list=[1,2]
for i in list:
    s=np.load("%s.npy"%i)
    r=np.append(s,axis=0)
    print(s)
    print(s.shape)`

【问题讨论】:

  • 像内置函数一样命名变量不是一个好主意,在这种情况下,list = [1, 2] 会隐藏内置函数 list()
  • 不要使用np.append。曾经!在列表中收集值(列表追加很棒)。连接一次。
  • np.append 有几个问题。这是concatenate 的一个写得不好且使用不当的前端。它不是列表追加克隆。反复使用这种方法很慢。也很难让初始的empty 正确(你必须很好地理解数组维度)。
  • 我应该在列表 ss 中使用存储数组,然后通过 np.concatenate(ss,axis=0) 在循环外连接它吗?
  • “连接起来很笨拙,前端使用不当”。你能解释一下吗

标签: arrays numpy


【解决方案1】:

您可以将所有内容加载到数组列表中,然后将该列表连接到一个数组中:

r = np.concatenate([np.random.rand(5, 5) for i in [1, 2]], axis=0)

【讨论】:

  • 是的,我将数据存储在列表中 =[(3,2),(3,2)],列表存储了几个 numpy 数组。现在我想连接。但它沿行轴附加而不指定轴
  • 如果我使用 np.concatenate(ss,axis=0) 代码可以正常工作,但是当我使用 np.append(ss,axis=0) 时它不起作用
  • 我已经删除了使用 empty 的那个,因为我无法让它工作。
猜你喜欢
  • 2018-04-17
  • 1970-01-01
  • 1970-01-01
  • 2015-10-05
  • 2017-03-23
  • 2016-07-24
  • 2015-01-03
  • 2021-10-08
  • 2019-10-15
相关资源
最近更新 更多