提问人:Oliver 提问时间:11/17/2023 最后编辑:Oliver 更新时间:11/17/2023 访问量:46
将 Numpy 数组转换为 np.int_ 在多次重复后抛出 RuntimeWarning
Casting Numpy array to np.int_ throws RuntimeWarning after multiple repetitions
问:
我遇到了一个奇怪的行为,对此我没有很好的解释。
在一个函数中,我对复制的数组执行一些操作。当我运行此代码一次时没有问题。但是,当我在 for 循环中使用相同的输入调用函数时,出现以下错误:numpy
numpy
RuntimeWarning: invalid value encountered in cast histogram
= ((histogram / histogram.sum()) * INT_CASTER).astype(np.int64)
是 m x m 形状,作为 dtype。 是一个 n x m x m 张量,包含所有单独的直方图。每个总和> 0,因此除以 0 的误差会很奇怪。
这些直方图是从外部数据生成的每个函数调用。我不确定如何避免这种行为。我也尝试过避免这个错误。这仅部分有帮助,我现在可以连续调用该函数几次而不会出现错误,但是调用超过 5 次时,此错误再次出现。如果没有,错误已经在两次迭代后出现。histogram
ndarray
np.float64
histograms
histogram
del histograms
del
功能如下:
def _normalize_cast_int(histograms: NDArray[np.float64]) -> NDArray[np.int64]:
int_histograms = np.empty(histograms.shape, dtype=np.int64)
instances = histograms.shape[0]
for i in range(instances):
histogram = histograms[i].copy()
histogram = ((histogram / histogram.sum()) * INT_CASTER).astype(np.int64)
error = INT_CASTER - histogram.sum()
mask = np.zeros(shape=histogram.size, dtype=np.int64)
mask[:error] += 1
np.random.seed(42)
np.random.shuffle(mask)
int_histograms[i] = histogram + np.reshape(mask, (-1, histogram.shape[0]))
return int_histograms
答: 暂无答案
评论
histogram = histograms[i].copy()
histogram
histograms
histogram / histogram.sum()
histograms