【发布时间】:2018-06-20 19:33:17
【问题描述】:
我创建了一个列大小为d 的数字数组,其中的数字是set(p) 的不同组合。接下来,我想删除比p 中的数字实例更多的行。我可以用for 循环来做到这一点,这是我的代码:
import numpy as np
import itertools as it
from collections import Counter
p = [0,0,0,1,1,1,1,2,2,2,2,2,3,3,3,4,4,4,4,4,5,5,5]
assert (len(set(p)) != 1)
cnt = Counter(p)
pos = np.array(list(it.product(set(p), repeat=d)))
ds = []
for i in range(len(pos)):
for j, k in cnt.items():
if len(np.where(pos[i] == j)[0]) > k:
ds.append(i)
pos = np.delete(pos, ds, axis=0)
我正在寻找一种更快的方法来做到这一点。谢谢!
【问题讨论】: