我有一个2dnumpy数组,我想知道我的数据集包含多少个唯一的行,以及每行的频率。解决这个问题的唯一方法是将整个数据集转换成一个字符串,然后进行比较,但肯定有更好的方法来实现这一点。感谢任何帮助。在
def getUniqueHaplotypes(self,data):
nHap=data.shape[0]
unique=dict()
for i in range(nHap):
s = "".join([str(j) for j in data[i]])
if unique.has_key(s):
unique[s]+=1
else:
unique[s] = 1
return unique
我喜欢有帮助的解决方案:
它很快。我唯一关心的是:是否可以使用unique作为数组而不是
dict()?
如果不使用dictionary格式打印unique dictionary,我会遇到麻烦。 谢谢朱塞佩查看^{} 和{a2}。在
例如
你的问题,我读错了。。。在
获取唯一行的一种方法是将对象视为结构化数组。。。在
在你的例子中,你有一个二维数组的bools。所以也许是这样?在
^{pr2}$当然,你最初的做法并没有错。。。只是为了展示一种稍微简洁的编写原始函数的方法(使用tuples,正如Justin建议的那样):
我们可以进一步使用defaultdict:
碰巧的是,这两种选择中的任何一种似乎都比“numpy thonic”的方式更快。。。)我早就猜到了!不过,像您在原始示例中所做的那样,将行转换为字符串是很慢的。你肯定想比较元组而不是字符串)。在
相关问题 更多 >
编程相关推荐