2017-06-02 21 views
1

我有一个三维数组G,其大小在一个循环中变化。在Matlab中,我首先创建一个空数组G = []; 然后我创建的G从另一个现有数组d的第一个元素,大小256×256,这是简单的事,在MATLAB如下指定一个数组作为Python中另一个数组的组件

G(:,:,1) = D(:,:) 

我如何做同样的事情在Python?

回答

0

空三维数组应该是这个样子

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“阵列”,这是一个“清单”

0

您可以使用

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.]]]) 
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) 
相关问题