>>> t = np.array([[1,1,1,1,1],[2,2,2,2,2],[3,3,3,3,3],[4,4,4,4,4],[5,5,5,5,5]])
>>> x = np.arange(5).reshape((-1,1)); y = np.arange(5)
>>> print (t[[x]],t[[y]])
大问题:
>>> s = scipy.sparse.csr_matrix(t)
>>> print (s[[x]].toarray(),s[[y]].toarray())
Traceback (most recent call last):
File "<pyshell#22>", line 1, in <module>
: :
: :
ValueError: data, indices, and indptr should be rank 1
s.toarray()[[x]]
的伟大工程,但违背了使用稀疏矩阵作为我的数组是太大了我的整个目的。我已经检查了与某些稀疏矩阵相关的属性和方法,以查看任何引用“高级索引”的内容,但没有任何骰子。有任何想法吗?
为什么你要另加一对方括号?他们是不稳定的逻辑,那种numpy恰好忽略了它的推理。除此之外,只尝试一维花式索引,这些都是矩阵,更高维度的花式索引无论如何可能会杀死你的二维矩阵。 – seberg
@seberg:上面的例子只是为了说明[高级索引](http://docs.scipy.org/doc/numpy/reference/arrays.indexing.html)语法。在我的真实代码中,我需要高级索引来在需要时调用_specific_ rows(即[t [1],t [5],t [6]])而不是范围或切片。 –
是的,但添加额外的对可以解释为't [np.array([x])]'而不是't [x,]'为单个索引添加额外的维度。我不会相信稀疏索引来处理这种情况,只要你愿意。 – seberg