附加Python 3D Numpy数组

时间:2017-08-07 08:12:47

标签: python arrays numpy append

我对3D python numpy有一些问题

import numpy as np
n = 5
m = 4

Sc = np.random.rand(m,n,n)
S1 = np.zeros((1,n+2))
S2 = np.zeros((n,1))

A0 = np.r_[S1, np.c_[S2, Sc[0], S2], S1]
A1 = np.r_[S1, np.c_[S2, Sc[1], S2], S1]
#print(A)
#print(B)
A = np.array([A0,A1])
A.shape
Atmp = np.r_[S1, np.c_[S2, Sc[2], S2], S1]

A = (2, 7, 7)

的维度

Atmp = (7,7)的维度。

如何追加Atmp to A

3 个答案:

答案 0 :(得分:2)

如果您可以提供帮助,请不要concatenate / append / stack数组,特别是大数据。它非常浪费内存而且速度很慢。

分配A = np.empty((m, n+2, n+2)),然后将其填入A[i] = np.r_[S1, np.c_[S2, Sc[i], S2], S1]。或者做它矢量化并摆脱for循环:

A = np.zeros((m, n+2, n+2))
A[:,1:-1,1:-1] = Sc

甚至可以在一行中完成:

A = np.pad(Sc, ((0,0),(1,1),(1,1)), 'constant', constant_values = 0)

答案 1 :(得分:1)

您可以使用reshape以正确的形式放置数组:

np.reshape(Atmp,(1, Atmp.shape[0], Atmp.shape[1]))

然后追加为

np.vstack([A, np.reshape(Atmp,(1, 7, 7))])

答案 2 :(得分:1)

你可以试试这个:

A = np.concatenate([A, [Atmp]])