【问题标题】:numpy asmatrix sometimes produces an array of listsnumpy asmatrix 有时会产生一个列表数组
【发布时间】:2018-07-08 08:31:07
【问题描述】:

我正在使用python的numpy通过numpy.asmatrix()将多维数据转换为矩阵。

data_array = [[] for k in range(K)]
while Append data to data_array:
   data_array[k].append(data)
mymatrix = numpy.asmatrix(data_array)

data_array 以 K*E 结尾。虽然我尝试使用 mymatrix 进行进一步操作,但事实证明其中一些有效,但其他仍然保留为列表。当我打印出来时,它看起来像

[[ list([..., ...]), list(..., ...) ]]

有谁知道其中的潜在原因?

【问题讨论】:

  • 看起来您正在尝试制作至少包含 3 个维度的矩阵。但是矩阵本质上是一个二维的东西。所以 NumPy 唯一能给你的是一个列表矩阵(或者数组,或者......某种序列来保存额外的维度),或者一个错误,所以我猜它选择了第一个。如果你真的想要 3 维,你想要一个数组,而不是矩阵。 (实际上,即使您只需要 2 维,您通常也需要一个带有 numpy 的数组。)
  • 同时,你能把它变成minimal reproducible example吗?那个伪代码显然是不可运行的,但它也没有告诉我们你在说什么E,或者那些data 的值是什么。
  • 这些列表的大小是否不同?

标签: python numpy matrix


【解决方案1】:

我的猜测是你正在做相当于:

In [5]: np.matrix([[1,2,3],[2,3],[3]])
Out[5]: matrix([[list([1, 2, 3]), list([2, 3]), list([3])]], dtype=object)

【讨论】:

    【解决方案2】:

    你应该改变你的方法,首先创建整个二维数组,然后填充它。像这样:

    mymatrix = np.empty((K, N))
    for k in range(K):
        mymatrix[k] = data
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-01
      • 2011-03-10
      相关资源
      最近更新 更多