Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用创建的每一行的频率从numpy中的矩阵中提取唯一的行_Python_Matrix_Numpy_Scipy_Unique - Fatal编程技术网

Python 使用创建的每一行的频率从numpy中的矩阵中提取唯一的行

Python 使用创建的每一行的频率从numpy中的矩阵中提取唯一的行,python,matrix,numpy,scipy,unique,Python,Matrix,Numpy,Scipy,Unique,关于以下问题的后续问题: 这里的答案解释了如何获得唯一的行。然而,matlab还返回创建的每一行的频率。有什么优雅的方法可以用python实现吗 谢谢 我曾经遇到过这个问题。 我做了以下几点:与其说是一个完美的解决方案,不如说是一个优雅的黑客 首先,将2d数组转换为1D数组或可哈希列表,然后就很容易了。 转换为一维浮点数数组的一种方法是将点积与D维随机向量相结合。 例如: 您可以使用奇特的索引和评估条件来计算每个唯一行的数量,如: from numpy import unique, array

关于以下问题的后续问题:

这里的答案解释了如何获得唯一的行。然而,matlab还返回创建的每一行的频率。有什么优雅的方法可以用python实现吗


谢谢

我曾经遇到过这个问题。 我做了以下几点:与其说是一个完美的解决方案,不如说是一个优雅的黑客

首先,将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)