Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/325.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 Scipy&x27;s csr_矩阵按值排序?_Python_Scikit Learn_Scipy_Sparse Matrix - Fatal编程技术网

Python Scipy&x27;s csr_矩阵按值排序?

Python Scipy&x27;s csr_矩阵按值排序?,python,scikit-learn,scipy,sparse-matrix,Python,Scikit Learn,Scipy,Sparse Matrix,因此,scikit learn的DBSCAN采用稀疏矩阵,如果矩阵不是csr_矩阵格式,则将其转换为稀疏矩阵。我想在csr_矩阵中进行分析,但我得到以下警告: 效率警告:预计算的稀疏输入未按数据排序 如何创建数据排序csr_矩阵?如果我初始化已排序的矩阵数据,矩阵将自动对其进行索引排序: >>> from scipy.sparse import csr_matrix >>> x = csr_matrix(([1,2,3],[[3,2,1],[5,2,1]]))

因此,scikit learn的DBSCAN采用稀疏矩阵,如果矩阵不是csr_矩阵格式,则将其转换为稀疏矩阵。我想在csr_矩阵中进行分析,但我得到以下警告:

效率警告:预计算的稀疏输入未按数据排序

如何创建数据排序csr_矩阵?如果我初始化已排序的矩阵数据,矩阵将自动对其进行索引排序:

>>> from scipy.sparse import csr_matrix
>>> x = csr_matrix(([1,2,3],[[3,2,1],[5,2,1]]))
>>> print(x)
  (1, 1)    3
  (2, 2)    2
  (3, 5)    1
我知道csr矩阵有一个
has\u sorted\u index
标志,但我不知道如何使用它。即使我将其设置为false,矩阵仍然按索引排序

编辑:我尝试了
sorted_index
,但似乎没有任何改变。我不确定我的
排序索引的概念是否正确?它应该按每行从低到高对数据进行排序吗

>>> from scipy.sparse import csr_matrix
>>> x = csr_matrix(([7,3,5,1,6,2], [[0,1,2,0,1,2],[0,0,0,1,1,1]]), shape=(3, 2))
>>> print(x)
  (0, 0)    7
  (0, 1)    1
  (1, 0)    3
  (1, 1)    6
  (2, 0)    5
  (2, 1)    2
>>> x.has_sorted_indices = False
>>> x.sort_indices()
>>> print(x)
  (0, 0)    7
  (0, 1)    1
  (1, 0)    3
  (1, 1)    6
  (2, 0)    5
  (2, 1)    2
我想要什么(这是否可能?)

基本上,我需要这个来返回True:

out_of_order = graph.data[:-1] > graph.data[1:]
line_change = np.unique(graph.indptr[1:-1] - 1)
line_change = line_change[line_change < out_of_order.shape[0]]
return (out_of_order.sum() == out_of_order[line_change].sum())
顺序错误=graph.data[:-1]>graph.data[1:] 行更改=np.unique(图indptr[1:-1]-1) 线条变化=线条变化[线条变化<无序。形状[0]] return(out-of-order.sum()==out-of-order[行更改].sum())
我认为您需要了解更多关于这项按数据排序的
要求。
scipy.sparse
中没有任何东西可以为您做到这一点。我甚至不知道这是什么意思。排序的索引与非零值的列索引有关-在每行内排序。@hpaulj感谢您的响应。实际上,我研究了抛出错误消息的原因,这正是我所需要的——列索引需要在每行中进行排序(按值)。。。我怎样才能做到这一点呢?
sort\u index
-@hpaulj我更新了关于我要找什么的问题。我可能完全误解了
sort\u index
的作用。我希望按照元素的值对每行中的元素进行排序。这是可行的还是我完全没有抓住要点?谢谢该方法称为
sort\u index
而不是
sort
sort\u data
!我认为您需要了解更多关于这项按数据排序的
要求。
scipy.sparse
中没有任何东西可以为您做到这一点。我甚至不知道这是什么意思。排序的索引与非零值的列索引有关-在每行内排序。@hpaulj感谢您的响应。实际上,我研究了抛出错误消息的原因,这正是我所需要的——列索引需要在每行中进行排序(按值)。。。我怎样才能做到这一点呢?
sort\u index
-@hpaulj我更新了关于我要找什么的问题。我可能完全误解了
sort\u index
的作用。我希望按照元素的值对每行中的元素进行排序。这是可行的还是我完全没有抓住要点?谢谢该方法称为
sort\u index
而不是
sort
sort\u data
out_of_order = graph.data[:-1] > graph.data[1:]
line_change = np.unique(graph.indptr[1:-1] - 1)
line_change = line_change[line_change < out_of_order.shape[0]]
return (out_of_order.sum() == out_of_order[line_change].sum())