Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中将数组指定为另一个数组的组件_Python_Arrays_Matlab_Assign - Fatal编程技术网

在Python中将数组指定为另一个数组的组件

在Python中将数组指定为另一个数组的组件,python,arrays,matlab,assign,Python,Arrays,Matlab,Assign,我有一个三维数组G,它的大小在一个循环中变化。在Matlab中,我首先创建一个空数组G=[]; 然后,我从另一个现有的数组D中创建G的第一个元素,大小为256x256,在matlab中这样做很简单,如下所示 G(:,:,1) = D(:,:) 如何在Python中执行相同的操作?一个空的3d数组应该是这样的 n = 256 threeD = [[[0 for k in xrange(n)] for j in xrange(n)] for i in xrange(n)] 或

我有一个三维数组G,它的大小在一个循环中变化。在Matlab中,我首先创建一个空数组
G=[]
; 然后,我从另一个现有的数组D中创建G的第一个元素,大小为256x256,在matlab中这样做很简单,如下所示

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

如何在Python中执行相同的操作?

一个空的3d数组应该是这样的

    n = 256
    threeD = [[[0 for k in xrange(n)] for j in xrange(n)] for i in xrange(n)]
或者,如果您只想在更大的3d阵列中使用一个256x256 2d阵列(我认为您正在Matlab中尝试)

其中n是每个“尺寸”的大小

它将为您提供一个满0的数组,或者如果您希望将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.]]])

考虑预分配

在python的numpy中,可以像这样预先分配:

G = np.zeros([depth, height, width])
然后你可以用一种类似于matlab的方法,在其中替换矩阵。如果您仍然想要一个大小不断变化的数组,可以使用2D数组创建一个列表,然后将其转换为
np.array
,如下所示:

G = list()
for i in range(N):
    G.append(D)
G = np.array(G)
G = list()
for i in range(N):
    G.append(D)
G = np.array(G)