【问题标题】:Appending rows onto a numpy matrix将行附加到一个 numpy 矩阵
【发布时间】:2015-10-06 10:54:15
【问题描述】:

我正在尝试将 4x1 行数据附加到 python 中的矩阵上。矩阵初始化为空,然后在循环的每次迭代期间增长一行,直到过程结束。我不知道矩阵将被附加多少次,因此不幸的是,将数组初始化为预定的最终大小不是一种选择。我在 np.r_ 中发现的问题是要附加的矩阵和列表的大小必须相同,这种情况很少见。下面是我一直在使用的一些伪代码。

    import numpy as np

    dataMatrix = np.empty([4,1])

    def collectData():
            receive data from hardware in the form of a 4x1 list

    while receivingData:
            newData = collectData()
            dataMatrix = np.r_(dataMatrix, newData)

有人知道如何解决这个问题吗?

【问题讨论】:

  • 一种常见的numpy 方法是将这些值附加到列表中,并在完成后将其转换为数组。列表比数组更适合迭代追加。
  • np.r_ 是一维连接的精美前端。它对于将范围和 linspace 的混合包串在一起(以切片表示)最为有用。

标签: python numpy matrix append row


【解决方案1】:

正如@hpaulj 建议的那样,您应该使用列表列表,然后在最后转换为 NumPy 矩阵。这将是 at least 2x faster 而不是使用 np.r_ 或其他 NumPy 方法构建矩阵

import numpy as np

dataMatrix = []

def collectData():
        return 4x1 list

while receivingData:
        dataMatrix.append(collectData())

dataMatrix = np.array(dataMatrix)

作为旁注,np.r_ 的唯一要求是矩阵的第一维等于数组的第一维(在您的情况下也是唯一的维)。也许你在应该使用 np.c_ 时使用了 np.r_

【讨论】:

    猜你喜欢
    • 2016-02-29
    • 1970-01-01
    • 2021-10-25
    • 2018-06-13
    • 1970-01-01
    • 2017-03-04
    • 2016-11-14
    • 1970-01-01
    相关资源
    最近更新 更多