gpt4 book ai didi

python - 用逆矩阵替换矩阵的所有元素

转载 作者:太空宇宙 更新时间:2023-11-04 07:17:13 25 4
gpt4 key购买 nike

我有一个简单的问题,但我不知道如何解决它。

这是一个矩阵:A = np.array([[1,0,3],[0,7,9],[0,0,8]]) .

我想找到一种快速的方法来用逆矩阵替换这个矩阵的所有元素,当然不包括零元素。

多亏了 Stackoverflow 的搜索引擎,我知道了如何用给定值替换一个带有条件的元素。相反,我没有弄清楚如何根据以前的元素(例如平方元素、逆元素等)用新元素替换元素

最佳答案

使用1。/A(注意 Python 2 的点):

>>> A
array([[1, 0, 3],
[0, 7, 9],
[0, 0, 8]], dtype)
>>> 1./A
array([[ 1. , inf, 0.33333333],
[ inf, 0.14285714, 0.11111111],
[ inf, inf, 0.125 ]])

或者如果你的数组有 dtype float,你可以在没有警告的情况下就地完成:

>>> A = np.array([[1,0,3], [0,7,9], [0,0,8]], dtype=np.float64)
>>> A[A != 0] = 1. / A[A != 0]
>>> A
array([[ 1. , 0. , 0.33333333],
[ 0. , 0.14285714, 0.11111111],
[ 0. , 0. , 0.125 ]])

这里我们使用 A != 0 来只选择那些非零的元素。

但是如果你在你原来的阵列上尝试这个你会看到

array([[1, 0, 0],
[0, 0, 0],
[0, 0, 0]])

因为您的数组只能容纳整数,而所有其他数组的倒数将向下舍入为 0。


通常,数组上的所有 numpy 东西都会进行逐元素矢量化转换,以便对元素进行平方,

>>> A = np.array([[1,0,3],[0,7,9],[0,0,8]]) 
>>> A * A
array([[ 1, 0, 9],
[ 0, 49, 81],
[ 0, 0, 64]])

关于python - 用逆矩阵替换矩阵的所有元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38308945/

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