在Python中将数组指定为另一个数组的组件
我有一个三维数组G,它的大小在一个循环中变化。在Matlab中,我首先创建一个空数组在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=[]
;
然后,我从另一个现有的数组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)