np.linalg.norm:“在sqrt中遇到无效的值”

时间:2018-08-10 18:57:45

标签: python numpy

我正在处理一些位置向量。我正在彼此操作每个位置,并且正在使用矩阵尽可能高效地执行操作。我的最新版本出现问题,警告我:RuntimeWarning: invalid value encountered in sqrt return sqrt(add.reduce(s, axis=axis, keepdims=keepdims))

以下给出警告的代码示例。

此警告是由np.linalg.norm引起的,仅当我为数组指定数据类型时才会发生,并且仅当我的向量超过90个时,才会在下面的示例代码中发生。

这是NumPy的错误,还是NumPy中的已知限制?还是我做错了什么?

x = np.full((100, 3), 1)  # Create an array of vectors, in this case all [1, 1, 1]
ps, qs = np.broadcast_arrays(x, np.expand_dims(x, 1))  # Created so that I can operate each vector on each other vector.
z = np.subtract(ps, qs, dtype=np.float32)  # Get the difference between them.
np.linalg.norm(z, axis=2)  # Get the magnitude of the difference.

1 个答案:

答案 0 :(得分:-1)

您应确保Z不包含任何负值! 测试您是否具有负值:

print len([_ for _ in z if _ < 0])