【发布时间】:2021-07-20 16:01:15
【问题描述】:
我有一个形状为(1000,4) 的numpy 数组output。它是一个包含 1000 个没有重复的四元组的数组,它们是有序的(即元素是 [0,1,2,3])。我想数一数我有多少次得到所有可能的四倍。更实际的是,我使用以下代码:
comb=np.array(list(itertools.combinations(range(32),4)))
def counting(comb, output):
k=0
n_output=np.zeros(comb.shape[0])
for i in range(comb.shape[0]):
k=0
for j in range(output.shape[0]):
if (output[j]==comb[i]).all():
k+=1
n_output[i]=k
return n_output
如何优化代码?目前运行需要 30 秒
【问题讨论】:
-
试着想出一个不涉及嵌套for循环的方法。
-
你也可以添加输出数组吗?
-
输出数组根据特定分布随机填充(比均匀分布或高斯分布更复杂)。所以,它类似于:[[1,2,4,25],...[16,18,20,30]...]
标签: python arrays performance numpy optimization