我正在处理一些位置向量。我正在彼此操作每个位置,并且正在使用矩阵尽可能高效地执行操作。我的最新版本出现问题,警告我: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.
答案 0 :(得分:-1)
您应确保Z不包含任何负值! 测试您是否具有负值:
print len([_ for _ in z if _ < 0])