根据索引值列表创建2个矩阵

时间:2017-10-22 14:30:15

标签: python arrays numpy scipy sparse-matrix

我有一个scipy稀疏矩阵 - /collection/Vermeer - 和一个python列表title。该列表包含与index矩阵中的行对应的整数。由此我想创建2个新的scipy稀疏矩阵:

  • 一个应包含title中的所有行,除非索引号位于title

  • 其他矩阵应包含index中的所有行,其中索引号位于title

例如

index

import numpy as np from scipy import sparse titles = sparse.csr_matrix(np.ones((5,5))) index = [3,2] 的所需输出为:

print(matrix1.todense())

[[ 1. 1. 1. 1. 1.] [ 1. 1. 1. 1. 1.] [ 1. 1. 1. 1. 1.]] 的所需输出为:

print(matrix2.todense())

1 个答案:

答案 0 :(得分:1)

您可以使用np.setdiff1d来查找排他性索引,并恰当地索引titles

idx1 = [3, 2]
idx2 = np.setdiff1d(np.arange(titles.shape[0]), idx1)

matrix1 = titles[idx2].todense()
matrix2 = titles[idx1].todense()

print(matrix1)
[[ 1.  1.  1.  1.  1.]
 [ 1.  1.  1.  1.  1.]
 [ 1.  1.  1.  1.  1.]]

print(matrix2)
[[ 1.  1.  1.  1.  1.]
 [ 1.  1.  1.  1.  1.]]