使用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 浮点数,您可以就地执行它而不会发出警告:
>>> 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]])