gpt4 book ai didi

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

转载 作者:IT老高 更新时间:2023-10-28 22:23:27 25 4
gpt4 key购买 nike

我认为我的问题应该很简单,但我找不到任何帮助在互联网上。我对 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com