【问题标题】:how to convert 2d list to 2d numpy array?如何将二维列表转换为二维 numpy 数组?
【发布时间】:2011-12-04 18:24:06
【问题描述】:

我有一个类似于

的二维列表
a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] 

我想将其转换为二维 numpy 数组。我们可以在不分配内存的情况下做到这一点吗

numpy.zeros((3,3))

然后将值存储到它?

【问题讨论】:

  • @Donkopotamus,这是我的一个错误......我正在给出一个序列......我也在做同样的事情,但得到了错误。在我从这里得到相同的代码后,我检查了问题的位置......所以它有帮助......当然,我会在发布之前检查文档......感谢您的友好提醒。

标签: python numpy


【解决方案1】:

只需将列表传递给np.array

a = np.array(a)

如果默认值不是您想要的,您也可以借此机会设置dtype

a = np.array(a, dtype=...)

【讨论】:

  • 这个解决方案不起作用。你会得到一个 numpy 的 python 列表数组。
  • @user1816847 只有当“子”列表的长度不同时才会发生这种情况(例如:[[1,2]、[1,2]、[1,2,3]]。它确实有效用问题中给出的例子。
  • 如果子数组的长度不同,这个解决方案只会给你一个 numpy 列表数组(即内部列表不会转换为 numpy 数组)。这完全有道理,因为您不能拥有具有可变二维的二维数组(矩阵)。
  • 从 2017 年 9 月开始感谢您(Ubuntu 16.04 LTS)。这就是我需要的。比预期的要简单得多。
  • 感谢@compie 的重要回答
【解决方案2】:

只需使用以下代码

c = np.matrix([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
matrix([[1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]])

然后它会给你

您可以使用以下代码检查矩阵的形状和尺寸

c.shape

c.ndim

【讨论】:

    【解决方案3】:

    np.array() 比 unutbu 上面所说的更强大。 您也可以使用它来将 np 数组的列表转换为更高维度的数组,以下是一个简单的示例:

    aArray=np.array([1,1,1])
    
    bArray=np.array([2,2,2])
    
    aList=[aArray, bArray]
    
    xArray=np.array(aList)
    

    xArray 的形状是 (2,3),它是一个标准的 np 数组。此操作避免了循环编程。

    【讨论】:

      【解决方案4】:

      我正在使用导出到表单中的python文件的大型数据集

      XVals1 = [.........] 
      XVals2 = [.........] 
      

      每个列表的长度相同。我用

      >>> a1 = np.array(SV.XVals1)
      
      >>> a2 = np.array(SV.XVals2)
      

      然后

      >>> A = np.matrix([a1,a2])
      

      【讨论】:

      • 这里的“SV”是什么
      猜你喜欢
      • 1970-01-01
      • 2016-09-24
      • 2023-02-03
      • 1970-01-01
      • 2022-01-15
      • 1970-01-01
      • 2019-01-23
      • 2012-09-16
      • 1970-01-01
      相关资源
      最近更新 更多