【问题标题】:How to append an empty array by multiple 1D array如何通过多个一维数组附加一个空数组
【发布时间】:2020-10-11 17:45:52
【问题描述】:

我想通过多个 1D 数组 (1,7680) 创建 2D 数组,以便在彼此下有多个数组创建 2D 数组 (n,7680)

任何帮助将不胜感激

代码

y=[]
t=0
movement=int(S*256)
if(S==0):
    movement=_SIZE_WINDOW       
while data.shape[1]-(t*movement+_SIZE_WINDOW) > 0:
    for i in range(0, 22):
        start = t*movement
        stop = start+_SIZE_WINDOW
        signals[i,:]=data[i,start:stop]
        y=np.append(signals[i,:],y)

     t=t+1

【问题讨论】:

  • 请详细说明。
  • 你写了np.empty(())。你在用numpy吗?如果这是真的,您可能需要将numpy 标签添加到您的问题中。
  • @AnnZen 我想通过多个 1D 数组 (1,7680) 创建 2D 数组,让多个数组在彼此下创建 2D 数组
  • 将数组一个一个地附加到其他数组是使用 NumPy 的一种极其低效的方式,因为涉及到二次复制。一个一个地建立一个数组列表,然后在最后转换为单个数组,或者预先分配整个数组并一个一个地填充块。
  • @user2357112supportsMonica 我该怎么做?我想通过多个 1D 数组创建 2D 数组,以便在彼此下有多个数组创建 2D 数组

标签: python arrays numpy multidimensional-array append


【解决方案1】:

如果您要创建的数组的形状已明确定义,那么最简单和最佳的方法是创建一个空数组,如下所示:

array_NxM = np.empty((N,M))

这将创建一个具有所需形状的空数组,然后您可以通过迭代其元素来填充数组。

通过附加一维数组来创建一个数组绝对不是最佳的,但可以接受的方法是创建一个列表,将一维数组附加到它,然后将列表转换为一个 numpy 数组,如下所示:

array_NxM = []
for i in range(M):
    array_NxM.append(array_1xM)
array_NxM = np.array(array_NxM)

最糟糕的方法肯定是使用 np.append。如果可能,请始终避免附加到 numpy 数组,因为此操作会导致数组内存中的完整副本和对其的读/写。

【讨论】:

  • 我将此添加到我的代码array_NxM = [] for J in range(7681): array_NxM.append(data[i,start:stop]) array_NxM = np.array(array_NxM) 但我收到此错误array_NxM.append(data[i,start:stop]) AttributeError: 'numpy.ndarray' object has no attribute 'append'
  • 你不能使用追加到一个 numpy 数组。只需使用第一个解决方案,它就会产生你需要的东西
  • 我不知道使用这个array_NxM = np.empty((N,M))的数组的形状。
  • 第一个解决方案是什么??
猜你喜欢
  • 2020-10-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-18
  • 2021-10-04
  • 2012-10-18
  • 2020-02-04
  • 2020-05-30
相关资源
最近更新 更多