【问题标题】:Python How to make array in array?Python如何在数组中制作数组?
【发布时间】:2017-08-18 12:42:10
【问题描述】:

我有一个 numpy 数组 Z1、Z2、Z3:
Z1 = [1,2,3]
Z2 = [4,5]
Z3 = [6,7,8,9]
我想要具有 Z1、Z2、Z3 作为数组的新 numpy 数组 Z,例如:
Z = [[1,2,3],[4,5],[6,7,8,9]
print(type(Z),type(Z[0]))
>>> <class 'numpy.ndarray'> <class 'numpy.ndarray'>
我使用了 np.append、hstack、vstack、insert、concatenate ...但我都失败了。
只有两种情况:
Z = [1,2,3,4,5,6,7,8,9]
或错误
所以我先创建了一个列表 Z,然后附加列表 Z1、Z2、Z3,然后将列表 Z 转换为 numpy 数组 Z。
但是
Z = [[1,2,3],[4,5],[6,7,8,9]]
print(type(Z),type(Z[0]))
>>> <class 'numpy.ndarray'> <class 'list'>

我不想使用“while”或“for”。请帮帮我..

【问题讨论】:

  • 这应该可以工作我猜z = np.array([Z1, Z2, Z3])
  • 您的数组长度不同。你期望最终数组的形状是什么?
  • 由于每个数组的长度不同,因此无法使用它们创建一个 ndarray

标签: python arrays list numpy types


【解决方案1】:

谢谢大家!答案与我想要的有点不同,但最终我在不使用“for”或“while”的情况下解决了这个问题。

首先,我制作了“numpy array”Z1、Z2、Z3并将它们放入“list”Z中。List中有数组。

其次,我将“list” Z 转换为“numpy array” Z。这是我想要的数组中的数组。

【讨论】:

    【解决方案2】:

    首先,Z 是一个列表列表:

    In [33]: Z = [[1,2,3], [4,5], [6,7,8,9]]
    

    这是一个列表数组 - 请注意 dtype。但请记住,np.array([[1,2,3],[4,5,6]]) 将生成 dtype int 的二维数组。

    In [34]: np.array(Z)
    Out[34]: array([[1, 2, 3], [4, 5], [6, 7, 8, 9]], dtype=object)
    

    创建对象 dtype 和给定形状的数组的最可靠方法是对其进行初始化,然后对其进行填充:

    In [35]: out = np.zeros((3,), dtype=object)
    In [36]: out[...] = Z
    In [37]: out
    Out[37]: array([[1, 2, 3], [4, 5], [6, 7, 8, 9]], dtype=object)
    

    这又是一个列表数组。要制作一个数组数组,我们首先要制作一个数组列表:

    In [38]: out[...] = [np.array(x) for x in Z]
    In [39]: out
    Out[39]: array([array([1, 2, 3]), array([4, 5]), array([6, 7, 8, 9])], dtype=object)
    

    对象数组是笨拙的野兽,不完全是列表,也不完全是(常规)数组。

    【讨论】:

      【解决方案3】:

      试试

      import numpy as np
      
      Z1 = [1,2,3]
      Z2 = [4,5]
      Z3 = [6,7,8,9]
      
      Z = np.array([Z1, Z2, Z3])
      print(Z)
      print(type(Z))
      

      这会将您的列表列表转换为 numpy 数组

      【讨论】:

      • 这只是一个 Python 对象数组:请注意 type(Z[0]) 返回 <class 'list'>。因此,您不妨只使用一个普通的 Python 列表列表。 Numpy 的快速数组操作仅适用于其基本项是本机数据类型的数组,而不是 Python 对象。
      【解决方案4】:

      你不能做那个数组。数组是 numpy 类似于数学中的矩阵。它们必须是 m 行,每行有 n 列。使用列表列表或np.arrays 列表

      【讨论】:

        猜你喜欢
        • 2018-03-23
        • 2022-11-30
        • 2011-06-14
        • 1970-01-01
        • 2014-05-23
        • 2018-11-29
        • 1970-01-01
        • 2019-01-11
        • 1970-01-01
        相关资源
        最近更新 更多