“附加”多维numy数组的正确方法?

2024-04-19 15:37:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个4d数组x,我想循环通过第一个轴,修改这个3d数组,并将这个修改后的数组添加到一个新的4d数组y。在

我目前正在做一些类似的事情:

xmod = modify(x[0, :, :, :])
y = xmod.reshape(1, x.shape[1], x.shape[2], x.shape[3])
for i in range(1, x.shape[0]):
    xmod = modify(x[i, :, :, :])
    y = np.vstack((y, xmod))

我猜是有一个清洁工干的。怎样?在


Tags: infornprange数组事情shapemodify
1条回答
网友
1楼 · 发布于 2024-04-19 15:37:35

如果必须一次对x一个子矩阵执行操作,则可以执行以下操作:

y = np.zeros_like(x)
for i in range(x.shape[0]):
    y[i,...] = modify(x[i,...])

例如

^{pr2}$

附加到列表通常比重复“附加”到数组好:

In [599]: y=[]
In [600]: for row in x:
   .....:     y.append(row*2)
   .....: 
In [601]: y=np.array(y)

对于非常大的情况,您可以看到vstack(或concatenate axis=0)是否更快。但是必须显式地向数组添加一个起始维度。在

In [615]: y=[]
In [616]: for row in x:
    y.append((row*2)[None,:])
   .....:     
In [617]: np.vstack(y)

相关问题 更多 >