我有一个三维数组G,其大小在一个循环中变化。在Matlab中,我首先创建一个空数组G = []
; 然后我创建的G从另一个现有数组d的第一个元素,大小256×256,这是简单的事,在MATLAB如下指定一个数组作为Python中另一个数组的组件
G(:,:,1) = D(:,:)
我如何做同样的事情在Python?
我有一个三维数组G,其大小在一个循环中变化。在Matlab中,我首先创建一个空数组G = []
; 然后我创建的G从另一个现有数组d的第一个元素,大小256×256,这是简单的事,在MATLAB如下指定一个数组作为Python中另一个数组的组件
G(:,:,1) = D(:,:)
我如何做同样的事情在Python?
空三维数组应该是这个样子
n = 256
threeD = [[[0 for k in xrange(n)] for j in xrange(n)] for i in xrange(n)]
,或者如果你想在更大的3D阵列中只有一个256x256的二维数组(这是我认为你是在Matlab努力)
threeD = [[[0 for k in xrange(n)] for j in xrange(n)]]
其中n是每个“维度”的大小。
它会给你一个数组全为0,也可以用无替代0,如果这是一个空数组
也更加希望的,它是不是真的在python“阵列”,这是一个“清单”
您可以使用
G[:,:,1]=D[:,:]
例子:
>>> G=np.zeros((2,2,2))
>>> D=np.ones((2,2))
>>> G[:,:,1]=D[:,:]
>>> G
array([[[ 0., 1.],
[ 0., 1.]],
[[ 0., 1.],
[ 0., 1.]]])
考虑preallo cating。
在Python的numpy的,你可以预先分配是这样的:
G = np.zeros([depth, height, width])
那么你可以slice的G类似于MATLAB的方式,并在它substitue矩阵。如果您仍然想要改变大小的阵列,可以使用2D阵列创建列表,然后将其转换为np.array
,如下所示:
G = list()
for i in range(N):
G.append(D)
G = np.array(G)