我想知道最好的方法是用scipy.sparse迭代稀疏矩阵的非零条目。例如,如果我执行以下操作:
from scipy.sparse import lil_matrix
x = lil_matrix( (20,1) )
x[13,0] = 1
x[15,0] = 2
c = 0
for i in x:
print c, i
c = c+1
输出是
0
1
2
3
4
5
6
7
8
9
10
11
12
13 (0, 0) 1.0
14
15 (0, 0) 2.0
16
17
18
19
因此看来迭代器正在接触每个元素,而不仅仅是非零条目。我看过API
http://docs.scipy.org/doc/scipy/reference/generation/scipy.sparse.lil_matrix.html
并搜索了一下,但是我似乎找不到有效的解决方案。
编辑:bbtrb的方法(使用coo_matrix)是远远超过我原来的建议更快,使用非零。Sven
Marnach的使用建议itertools.izip
也提高了速度。目前最快的是using_tocoo_izip
:
import scipy.sparse
import random
import itertools
def using_nonzero(x):
rows,cols = x.nonzero()
for row,col in zip(rows,cols):
((row,col), x[row,col])
def using_coo(x):
cx = scipy.sparse.coo_matrix(x)
for i,j,v in zip(cx.row, cx.col, cx.data):
(i,j,v)
def using_tocoo(x):
cx = x.tocoo()
for i,j,v in zip(cx.row, cx.col, cx.data):
(i,j,v)
def using_tocoo_izip(x):
cx = x.tocoo()
for i,j,v in itertools.izip(cx.row, cx.col, cx.data):
(i,j,v)
N=200
x = scipy.sparse.lil_matrix( (N,N) )
for _ in xrange(N):
x[random.randint(0,N-1),random.randint(0,N-1)]=random.randint(1,100)
产生以下timeit
结果:
% python -mtimeit -s'import test' 'test.using_tocoo_izip(test.x)'
1000 loops, best of 3: 670 usec per loop
% python -mtimeit -s'import test' 'test.using_tocoo(test.x)'
1000 loops, best of 3: 706 usec per loop
% python -mtimeit -s'import test' 'test.using_coo(test.x)'
1000 loops, best of 3: 802 usec per loop
% python -mtimeit -s'import test' 'test.using_nonzero(test.x)'
100 loops, best of 3: 5.25 msec per loop
我是C语言的新手。我已经开始使用向量,并且注意到在我看到的所有通过索引迭代向量的代码中,循环的第一个参数总是基于向量的。Java我可能会使用ArrayList做这样的事情: 我在C语言中看不到这一点有什么原因吗?是不好的做法吗?
我有一个带有两个变量X和Y的pandas数据帧(大约1M行),并且希望使用scipy,sparse创建一个稀疏矩阵。输出应该是一个n x m矩阵,如果x=x和Y=Y,则其条目为1。 下面是数据结构的示例 所需的输出为 提前致谢
问题内容: 我希望能够遍历矩阵以将函数应用于每一行。如何针对Numpy矩阵执行此操作? 问题答案: 使用。假设您的矩阵是2D,则可以这样使用:
问题内容: 我在存储过程(SQL Server 2008)中有一个XML变量,其示例值为 我必须采用每个类别并将其作为单独的记录插入表中。如何在XML中进行迭代并获取单个节点的值? 如果我想调用存储过程并将每个类别作为输入参数发送,我们该怎么做?该存储过程是旧式存储过程,一次只能接受一个类别。我正在尝试以这种方式调用过程。 循环从xml变量获取单个类别。 用当前类别调用存储过程。 移至下一个类别。
主要内容:什么是遍历?,遍历 DOM什么是遍历? jQuery 遍历,意为"移动",用于根据其相对于其他元素的关系来"查找"(或选取)HTML 元素。以某项选择开始,并沿着这个选择移动,直到抵达您期望的元素为止。 下图展示了一个家族树。通过 jQuery 遍历,您能够从被选(当前的)元素开始,轻松地在家族树中向上移动(祖先),向下移动(子孙),水平移动(同胞)。这种移动被称为对 DOM 进行遍历。 图示解析: <div> 元素是 <
本文向大家介绍Swift遍历,包括了Swift遍历的使用技巧和注意事项,需要的朋友参考一下 例子