【问题标题】:Python array using numpy使用 numpy 的 Python 数组
【发布时间】:2017-02-21 17:52:41
【问题描述】:

我对使用 numpy 进行矢量化感到困惑。

特别是,我有一个这种形式的矩阵: 类型为<type 'list'>

[[0.0, 0.0, 0.0, 0.0], [0.02, 0.04, 0.0325, 0.04], [1, 2, 3, 4]]

如何使用 numpy 使它看起来像下面这样?

[[  0.0   0.0   0.0     0.0  ]
 [  0.02  0.04  0.0325  0.04 ]
 [  1     2     3       4    ]]

是的,我知道我可以这样做:

np.array([[0.0, 0.0, 0.0, 0.0], [0.02, 0.04, 0.0325, 0.04], [1, 2, 3, 4]])

但是我有一个很长的矩阵,我不能像那样输入每一行。当我有一个很长的矩阵时,我该如何处理?

【问题讨论】:

  • np.array([[0.0, 0.0, 0.0, 0.0], [0.02, 0.04, 0.0325, 0.04], [1, 2, 3, 4]])
  • 嗨,Erotemic,你能看看我的更新吗?
  • 如何获得不想输入的矩阵?它现在以什么形式存在(例如,我有一个数组数组、一个 CSV 文件、一个生成器函数)?
  • 什么是 np.array(A) ?
  • 这两个数组没有区别。您只想逐行打印格式化的吗?

标签: python arrays numpy vectorization


【解决方案1】:

这不是列表类型的矩阵,它是一个包含列表的列表。你可能认为它是矩阵,但对于 Python 来说它只是一个列表

alist = [[0.0, 0.0, 0.0, 0.0], [0.02, 0.04, 0.0325, 0.04], [1, 2, 3, 4]]

arr = np.array(alist)

工作原理与

相同
arr = np.array([[0.0, 0.0, 0.0, 0.0], [0.02, 0.04, 0.0325, 0.04], [1, 2, 3, 4]])

这将创建二维数组,形状 (3,4) 和 dtype 浮点数

In [212]: arr = np.array([[0.0, 0.0, 0.0, 0.0], [0.02, 0.04, 0.0325, 0.04], [1, 2, 3, 4]])

In [213]: arr
Out[213]: 
array([[ 0.    ,  0.    ,  0.    ,  0.    ],
       [ 0.02  ,  0.04  ,  0.0325,  0.04  ],
       [ 1.    ,  2.    ,  3.    ,  4.    ]])
In [214]: print(arr)
[[ 0.      0.      0.      0.    ]
 [ 0.02    0.04    0.0325  0.04  ]
 [ 1.      2.      3.      4.    ]]

【讨论】:

    【解决方案2】:

    假设您从一个大数组开始,为什么不将其拆分为大小合适的数组 (n):

    splitted = [l[i:i + n] for i in range(0, len(array), n)]
    

    并从中制作矩阵:

    np.array(splitted)
    

    【讨论】:

    • 您可以使用np.array(A).reshape 更快地获取此表单。
    【解决方案3】:

    如果你说你有一个存储在 Python 对象 A 中的列表列表,你需要做的就是调用 np.array(A),它将使用 A 的元素返回一个 numpy 数组。否则,您现在需要指定数据的格式,以阐明您希望如何加载数据。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-07-22
      • 1970-01-01
      • 2013-08-10
      • 1970-01-01
      • 1970-01-01
      • 2022-01-26
      • 2014-08-10
      相关资源
      最近更新 更多