【发布时间】:2020-07-30 21:30:26
【问题描述】:
1。 我尝试制作一个形状为 numpy 的数组:(6962341, 268148),输入:np.uint8
2。 我的数据包括 [x1,x2,x3,x4], [x2,x1], [x4,x5,x3]...
3。 我想分配 array[x1,x2] += 1, array[x1,x3] += 1, array[x1,x4] += 1, array[x2,x3] += 1, ...
4。 所以我尝试了以下结构的功能。
import numpy as np
from itertools import combinations
base_array = np.zeros((row_size, col_size), dtype=np.uint8))
for each_list in data:
for (x,y) in list(combinations(each_list,2)):
if x>y:
base_array[y,x] += 1
else:
base_array[x,y] += 1
它基本上计算矩阵的上三角形,我将使用上三角形值。您也可以认为这类似于为共现矩阵制作基矩阵 A。但是这个功能太慢了,我认为可以做得更快。 我该怎么办?
【问题讨论】:
-
你的数据是什么
x1, x2, ...types? -
我的数据只包含整数,每个列表不包含相同的元素
标签: python performance numpy matrix variable-assignment