numpy数组子集错误

时间:2017-10-30 22:25:44

标签: python arrays numpy sparse-matrix

我有一个类型为

的numpy稀疏矩阵A1
 scipy.sparse.dok.dok_matrix

带整数值。我正在尝试使用它来配置另一个类型为

的整数矩阵A2
 numpy.matrixlib.defmatrix.matrix

通过

 A2[A1>0]

它们都有形状(1,10000)。虽然它很适合使用

 A1[A1>0]

我收到以下错误:

>> A2[A1>0]

Traceback (most recent call last):

File "<ipython-input-250-19959d659dc5>", line 1, in <module>
  edge_counts[nodes>0]

File "//anaconda/lib/python2.7/site-packages/numpy/matrixlib/defmatrix.py", line 284, in __getitem__
out = N.ndarray.__getitem__(self, index)

IndexError: only integers, slices (`:`), ellipsis (`...`), numpy.newaxis (`None`) and integer or boolean arrays are valid indices

1 个答案:

答案 0 :(得分:1)

IndexError告诉A1 > 0不是与索引兼容的对象。 您可以使用以下方式轻松调查:

In []: type(A1 > 0)
Out[]: scipy.sparse.csr.csr_matrix

您可以先使用bool将A1转换为数组,然后转入toarray()数组:

In []: type(A1.toarray() > 0)
Out[]: numpy.ndarray

然后A2[A1.toarray() > 0]应该可以正常工作。