Git*_*x31 1 python numpy matrix python-2.7
我有一个简单的问题,我无法弄清楚如何解决它.
这是一个矩阵: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 ]])
Run Code Online (Sandbox Code Playgroud)
或者,如果您的数组具有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 ]])
Run Code Online (Sandbox Code Playgroud)
这里我们A != 0用来只选择那些非零的元素.
但是,如果您在原始阵列上尝试此操作,您会看到
array([[1, 0, 0],
[0, 0, 0],
[0, 0, 0]])
Run Code Online (Sandbox Code Playgroud)
因为你的数组只能保存整数,而其他所有数组的反转都会向下舍入为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]])
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
87 次 |
| 最近记录: |