Python:调整现有数组的大小并用零填充

标签 python arrays matrix numpy resize

我认为我的问题应该很简单,但我找不到任何帮助 在互联网上。我对 Python 很陌生,所以有可能 我遗漏了一些非常明显的东西。

我有一个数组 S,像这样 [x x x](一维)。我现在创建一个 对角矩阵,sigma,带有 np.diag(S) - 到目前为止,一切都很好。现在,我想 调整这个新的对角数组的大小,以便我可以将它乘以另一个数组 我有。

import numpy as np
...
shape = np.shape((6, 6)) #This will be some pre-determined size
sigma = np.diag(S) #diagonalise the matrix - this works
my_sigma = sigma.resize(shape) #Resize the matrix and fill with zeros - returns "None" - why?

但是,当我打印 my_sigma 的内容时,我得到 "None"。有人可以请 指出我正确的方向,因为我无法想象这应该是 好复杂。

提前感谢您的帮助!

卡斯帕

图形:

我有这个:

[x x x]

我想要这个:

[x 0 0]
[0 x 0]
[0 0 x]
[0 0 0]
[0 0 0]
[0 0 0] - or some similar size, but the diagonal elements are important.

最佳答案

在 1.7.0 版本中有一个新的 numpy 函数 numpy.pad可以在一行中做到这一点。与其他答案一样,您可以使用 np.diag 构造对角矩阵在填充之前。 此答案中使用的元组 ((0,N),(0,0)) 表示要填充的矩阵的“边”。

import numpy as np

A = np.array([1, 2, 3])

N = A.size
B = np.pad(np.diag(A), ((0,N),(0,0)), mode='constant')

B 现在等于:

[[1 0 0]
 [0 2 0]
 [0 0 3]
 [0 0 0]
 [0 0 0]
 [0 0 0]]

关于Python:调整现有数组的大小并用零填充,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9251635/

相关文章:

JavaScript:在未定义的新 Array() 上使用 .map() 和 .forEach()

c - 仅包含 "* "和 "SPACE "的输入随机矩阵

python - 如何使用 sed -n 但在 Python 中从文本文件中提取一系列行?

python - 如何在两个 pandas 数据框之间应用函数

jquery - IE8 无法获取属性值 'src' : object is null or undefined

language-agnostic - 不同语言在机器学习中的相对受欢迎程度?

javascript - 使用 JavaScript 从 matrix3d() 获取 3D CSS 旋转值

Python - 将前导零添加到 CSV 文件中的日期数字

Python 2.7 异常处理语法

javascript - 如何从 JavaScript 数组中删除特定项目?