【问题标题】:Numpy diag not returning a matrixNumpy诊断不返回矩阵
【发布时间】:2020-08-06 18:29:33
【问题描述】:

我正在尝试创建一个向量并将其嵌入到矩阵的对角线上。我用过

A = np.random.rand(10, 1)
M = np.diag(A)

我从this tutorial 和其他人认为我应该在对角线上获取 A 的元素,但我的输出只是 A 的第一个元素。这里有什么错误?

【问题讨论】:

  • 1 的值更改为4 并重新运行您的代码。只有一个元素,因为它采用对角线元素
  • @bigbounty 抱歉,我早期版本的问题没有指定 n 但 n= 10。我有一个 10x1 向量,我现在想要一个 10x10 对角矩阵。您的解决方案似乎为 A 生成了一个矩阵,但我想使用 diag 从向量转到对角矩阵。
  • A 只有一维,它的对角线应该是多少?或者换一种说法,它的第二个维度不包含任何内容,所以你只能得到[0,0] 元素。
  • @wwii 我认为 diag 可以双向工作,即从向量到矩阵以及从矩阵到向量。也许这是不正确的?我想取 A 的 10 个元素(一个向量)并写下一个 10x10 矩阵,这些元素在对角线上,其他地方为零

标签: python arrays numpy matrix


【解决方案1】:

我想取 A 的 10 个元素(一个向量)并写下一个 10x10 矩阵,这些元素在对角线上,其他地方为零

a = np.random.rand(10, 1)

>>> a.ndim
2

返回一个二维数组,.diag 尝试从中提取对角线,但 第二维 中没有任何内容,因此它只返回 [0,0]物品。要在其对角线上创建一个带有a 的二维数组,请将a 制作为一维数组。

a = np.random.rand(10)
m = np.diag(a)

【讨论】:

    猜你喜欢
    • 2017-09-19
    • 1970-01-01
    • 1970-01-01
    • 2019-08-10
    • 1970-01-01
    • 1970-01-01
    • 2018-01-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多