【发布时间】:2020-11-06 17:01:58
【问题描述】:
我正在编写一个代码来使用 KNN 分析异常值,当我制作矩阵 (70k x 70k) 时,它对于我的 RAM (36GB) 来说太大了,所以我将它们分成 7 个 10k x 10k 元素的矩阵,下一个代码:
matrices = []
for i in range(7):
matrices.append(np.zeros([10000, 10000]))
for matrix in matrices:
for i in range(10000 * matrices.index(matrix), 10000 * (matrices.index(matrix) + 1)):
for j in range(10000 * matrices.index(matrix), 10000 * (matrices.index(matrix) + 1)):
distance = mt.sqrt((x[i] - x[j]) ** 2 + (y[i] - y[j]) ** 2)
matrix[i, j] = round(distance, 3)
但是当我运行它时(当然是 25 分钟后),它会显示下一个错误:
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
在for i in range(10000 * matrices.index(matrix), 10000 * (matrices.index(matrix) + 1)): 行中我找不到任何关于此的信息,因为我实际上并没有要求真值。
(这是一个硬件,没有时间学习和使用pytables)
【问题讨论】:
-
最后我把矩阵分成了49个较小的矩阵,分别分析,不是最优化的方法,但是有效,谢谢解答!!
标签: python arrays numpy knn valueerror