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

时间:2017-06-02 07:30:04

标签: python arrays matlab assign

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

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

我怎样才能在Python中做同样的事情?

3 个答案:

答案 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.]]])