【问题标题】:Assigning an array as a component of another array in Python在 Python 中将数组分配为另一个数组的组件
【发布时间】:2017-11-03 12:39:59
【问题描述】:

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

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

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

【问题讨论】:

    标签: python arrays matlab assign


    【解决方案1】:

    考虑预分配。

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

    G = np.zeros([depth, height, width])
    

    然后你可以sliceG 以类似于matlab的方式,并在其中替换矩阵。如果您仍然想要一个大小可变的数组,您可以使用二维数组创建一个列表,然后将其转换为 np.array,如下所示:

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

    【讨论】:

      【解决方案2】:

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

          n = 256
          threeD = [[[0 for k in xrange(n)] for j in xrange(n)] for i in xrange(n)]
      

      或者,如果您只想要一个 256x256 2d 数组在较大的 3d 数组中(我认为您在 Matlab 中尝试这样做)

          threeD = [[[0 for k in xrange(n)] for j in xrange(n)]]
      

      其中 n 是每个“维度”的大小。

      它会给你一个充满 0 的数组,或者你可以用 None 替换 0,如果这更适合作为一个空数组

      另外,它在 python 中并不是真正的“数组”,它是一个“列表”

      【讨论】:

        【解决方案3】:

        你可以使用

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-08-22
          • 2016-06-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-06-25
          相关资源
          最近更新 更多