我有一个三维数组G,其大小在循环中变化。在Matlab中,我首先创建一个空数组G = []
;
然后我从另一个大小为256x256的现有数组D创建G的第一个元素,在matlab中这样做很简单,如下所示
G(:,:,1) = D(:,:)
我怎样才能在Python中做同样的事情?
答案 0 :(得分:1)
考虑预先分配。
在python的numpy中你可以像这样预先分配:
G = np.zeros([depth, height, width])
然后你可以用类似于matlab的方式slice G,并在其中替换矩阵。如果您仍想要更改大小的数组,可以使用2D数组创建一个列表,然后将其转换为np.array
,如下所示:
G = list()
for i in range(N):
G.append(D)
G = np.array(G)
答案 1 :(得分:0)
一个空的3d数组应该看起来像这样
n = 256
threeD = [[[0 for k in xrange(n)] for j in xrange(n)] for i in xrange(n)]
或者如果你想在更大的3d数组中只有一个256x256 2d数组(这是我认为你在Matlab中尝试的那样)
threeD = [[[0 for k in xrange(n)] for j in xrange(n)]]
其中n是每个“维度”的大小。
它将为您提供一个满0的数组,或者您可以将0替换为None,如果这更适合作为空数组
另外,它在python中并不是一个“数组”,它是一个“列表”
答案 2 :(得分: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.]]])