Python 使用创建的每一行的频率从numpy中的矩阵中提取唯一的行
关于以下问题的后续问题: 这里的答案解释了如何获得唯一的行。然而,matlab还返回创建的每一行的频率。有什么优雅的方法可以用python实现吗Python 使用创建的每一行的频率从numpy中的矩阵中提取唯一的行,python,matrix,numpy,scipy,unique,Python,Matrix,Numpy,Scipy,Unique,关于以下问题的后续问题: 这里的答案解释了如何获得唯一的行。然而,matlab还返回创建的每一行的频率。有什么优雅的方法可以用python实现吗 谢谢 我曾经遇到过这个问题。 我做了以下几点:与其说是一个完美的解决方案,不如说是一个优雅的黑客 首先,将2d数组转换为1D数组或可哈希列表,然后就很容易了。 转换为一维浮点数数组的一种方法是将点积与D维随机向量相结合。 例如: 您可以使用奇特的索引和评估条件来计算每个唯一行的数量,如: from numpy import unique, array
谢谢 我曾经遇到过这个问题。 我做了以下几点:与其说是一个完美的解决方案,不如说是一个优雅的黑客 首先,将2d数组转换为1D数组或可哈希列表,然后就很容易了。 转换为一维浮点数数组的一种方法是将点积与D维随机向量相结合。 例如:
您可以使用奇特的索引和评估条件来计算每个唯一行的数量,如:
from numpy import unique, array, all
def myunique(input):
u = array([array(x) for x in set(tuple(x) for x in input)])
return u, array([len(input[all(input==x, axis=1)]) for x in u],dtype=int)
例如:
a = array([list('1234'),
list('1234'),
list('1222'),
list('1222'),
list('1234')],dtype=str)
print myunique(a)
#(array([['1', '2', '2', '2'],
# ['1', '2', '3', '4']],
# dtype='|S1'), array([2, 3]))
该软件包(免责声明:我是其作者)有一个功能,该功能以高效的方式实现:
import numpy_indexed as npi
m = np.random.randint(0, 2, (20, 3))
unique, count = npi.count(m)
我想我会提到您的myunique(x)函数显式引用了a.:)
import numpy_indexed as npi
m = np.random.randint(0, 2, (20, 3))
unique, count = npi.count(m)