【问题标题】:How do I add an element to numpy nd array?如何将元素添加到 numpy nd 数组?
【发布时间】:2019-04-08 00:19:18
【问题描述】:

我想将形状 (60,4) 的矩阵添加到形状 (1000,60,4) 的空 numpy 数组中 但是,当我使用以下代码时,它会失败

np.append(arr=array,values=i)

在上面的代码中,对象i的形状是(60,4), 它失败了我的意思是它向数组中添加了一个全零的矩阵,这是不期望的。我做错什么了吗 如何将矩阵添加到数组中,保持最终输出为 (1000,60,4)?

注意 不要重复这个问题。它不同于these之类的问题 我没有一维数组,而是一个更复杂的 nd 数组。 感谢您的帮助

【问题讨论】:

  • 您的预期结果是什么?
  • 通常当人们使用np.append 和一个“空”数组时,他们会尝试模拟列表alist=[]; alist.append(some_value) 进程。我在最近的答案stackoverflow.com/questions/53135673/… 中探讨了这个问题。您在非常不同的意义上使用“添加”。从 [] 为空的意义上说,您的 (1000,64,4) 数组不是“空的”。它已经填充了值(0 或随机值)。

标签: python arrays numpy tensorflow scikit-learn


【解决方案1】:

如果你想assign一个值给数组的一个元素,你必须使用assign操作,而不是concatenation,什么你做了:

import numpy as np
np.append(arr=array,values=i)

将生成一个形状为 (240240,)

的列表

分配给数组的元素之一:

   arr[0] = i

将生成一个形状为 (1000,60,4) 的列表

【讨论】:

    【解决方案2】:

    您可以将 60,4 分配给 1000 个职位中的任何一个。

    big_array[pos] = little_array
    

    示例:

    import numpy as np
    
    a = np.zeros((3,6,4))
    b = np.ones((6,4))
    
    a[1] = b
    

    产量:

               a[1]=  
               [[1., 1., 1., 1.],
               [1., 1., 1., 1.],
               [1., 1., 1., 1.],
               [1., 1., 1., 1.],
               [1., 1., 1., 1.],
               [1., 1., 1., 1.]]
    

    【讨论】:

      猜你喜欢
      • 2020-07-07
      • 1970-01-01
      • 2022-01-21
      • 1970-01-01
      • 2019-05-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多