我有一个很大的csv文件,它列出了图中节点之间的连接.例:
0001,95784
0001,98743
0002,00082
0002,00091
所以这意味着节点id 0001连接到节点95784和98743,依此类推.我需要把它读成numpy中的稀疏矩阵.我怎样才能做到这一点?我是python的新手,所以这方面的教程也会有所帮助.
稀疏矩阵格式(dok)假设不在字典中的键的值等于零.有没有办法让它使用除零以外的默认值?
还有,有办法计算稀疏矩阵的日志(类似于常规numpy矩阵中的np.log)
我需要在OpenCV中对稀疏矩阵SparseMat进行矩阵运算(主要是乘法和逆运算).
我注意到你只能迭代并向SparseMat插入值.
我可以使用外部代码吗?(或者我错过了什么?)
与STATS.se交叉,因为这个问题可以跨越两个STAT.se/SO https://stats.stackexchange.com/questions/17712/parallelize-solve-for-ax-b
我有一些非常大的稀疏矩阵,使用矩阵包中的spMatrix函数创建.
使用solve()函数适用于我的Ax = b问题,但需要很长时间.几天.
我注意到http://cran.r-project.org/web/packages/RScaLAPACK/RScaLAPACK.pdf 似乎有一个可以并行化解决方案功能的功能,但是,可能需要几周的时间来安装新的软件包特定服务器.
服务器已经安装了雪包.
所以
谢谢.
[编辑] - 其他细节
矩阵约为370,000 x 370,000.我用它来解决alpha中心问题,http://en.wikipedia.org/wiki/Alpha_centrality.我最初在igraph包中使用alpha中心函数,但它会崩溃R.
更多细节
我有一个scipy.sparse.csr_matrix格式的大型稀疏矩阵X,我想用一个利用并行性的numpy数组W来乘以它.经过一些研究后,我发现我需要在多处理中使用Array,以避免在进程之间复制X和W(例如:如何在Python多处理中将Pool.map与Array(共享内存)结合起来?并将共享的只读数据复制到Python多处理的不同过程?).这是我最近的尝试
import multiprocessing
import numpy
import scipy.sparse
import time
def initProcess(data, indices, indptr, shape, Warr, Wshp):
global XData
global XIndices
global XIntptr
global Xshape
XData = data
XIndices = indices
XIntptr = indptr
Xshape = shape
global WArray
global WShape
WArray = Warr
WShape = Wshp
def dot2(args):
rowInds, i = args
global XData
global XIndices
global XIntptr
global Xshape
data = numpy.frombuffer(XData, dtype=numpy.float)
indices = numpy.frombuffer(XIndices, dtype=numpy.int32)
indptr = numpy.frombuffer(XIntptr, dtype=numpy.int32)
Xr = scipy.sparse.csr_matrix((data, indices, …Run Code Online (Sandbox Code Playgroud) 给定Scipy CSC稀疏矩阵"sm",其尺寸(170k x 170k)具有4.4亿个非零点,稀疏CSC矢量"v"(170k x 1)具有一些非零点,有什么可以是为提高操作性能而做的:
resul = sm.dot(v)
Run Code Online (Sandbox Code Playgroud)
?
目前大约需要1秒钟.初始化矩阵作为CSR将时间增加到3秒,因此CSC表现更好.
SM是产品之间相似性的矩阵,V是表示用户购买或点击的产品的向量.所以对于每个用户来说,sm都是一样的.
我使用的是Ubuntu 13.04,Intel i3 @ 3.4GHz,4核心.
研究SO我读了关于Ablas包的内容.我输入了终端:
~$ ldd /usr/lib/python2.7/dist-packages/numpy/core/_dotblas.so
Run Code Online (Sandbox Code Playgroud)
结果导致:
linux-vdso.so.1 => (0x00007fff56a88000)
libblas.so.3 => /usr/lib/libblas.so.3 (0x00007f888137f000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f8880fb7000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f8880cb1000)
/lib64/ld-linux-x86-64.so.2 (0x00007f888183c000)
Run Code Online (Sandbox Code Playgroud)
据我所知,这意味着我已经在使用Ablas的高性能套件.我仍然不确定这个软件包是否已经实现了并行计算,但它看起来并没有.
多核处理有助于提升性能吗?如果是这样,是否有任何库可能有助于python?
我也在考虑在Cython中实现这个的想法,但我不知道这是否会带来好的结果.
提前致谢.
python performance scipy sparse-matrix matrix-multiplication
在slam包或Matrix包中是否有内置函数将简单三元组矩阵形式的稀疏矩阵(从slam包)转换为dgTMatrix/dgCMatrix形式的稀疏矩阵(来自Matrix包)?
是否有内置的方法从简单的三元组矩阵访问非零条目?
我在R工作
我在Golang中使用地图实现了一个稀疏矩阵,我注意到我的代码在这个改变之后开始花了很长时间才完成,在消除了其他可能的原因之后,似乎罪魁祸首就是地图本身的迭代.Go Playground链接(由于某种原因不起作用).
package main
import (
"fmt"
"time"
"math"
)
func main() {
z := 50000000
a := make(map[int]int, z)
b := make([]int, z)
for i := 0; i < z; i++ {
a[i] = i
b[i] = i
}
t0 := time.Now()
for key, value := range a {
if key != value { // never happens
fmt.Println("a", key, value)
}
}
d0 := time.Now().Sub(t0)
t1 := time.Now()
for key, value := range b {
if key …Run Code Online (Sandbox Code Playgroud) 我想应用鼠标包,但我无法将大型稀疏矩阵转换为矩阵.
library(Matrix)
library(mice)
i=c(2,9,6:10^7)
j=c(2,9,6:10^7)
x=7*(1:7^7)
write.csv(a,"a.csv")
c=read.csv("a.csv")
w=sparseMatrix(i=c[,1],j=c[,2],x=c[,3])
w=as.matrix(w)
Run Code Online (Sandbox Code Playgroud)
Run Code Online (Sandbox Code Playgroud)Error in asMethod(object) : Cholmod error 'problem too large' at file ../Core/cholmod_dense.c, line 105
我想以HDF5格式压缩和存储一个巨大的Scipy矩阵.我该怎么做呢?我试过以下代码:
a = csr_matrix((dat, (row, col)), shape=(947969, 36039))
f = h5py.File('foo.h5','w')
dset = f.create_dataset("init", data=a, dtype = int, compression='gzip')
Run Code Online (Sandbox Code Playgroud)
我得到这样的错误,
TypeError: Scalar datasets don't support chunk/filter options
IOError: Can't prepare for writing data (No appropriate function for conversion path)
Run Code Online (Sandbox Code Playgroud)
我无法将其转换为numpy数组,因为会有内存溢出.什么是最好的方法?
sparse-matrix ×10
python ×5
scipy ×4
r ×3
matrix ×2
performance ×2
dictionary ×1
go ×1
h5py ×1
hdf5 ×1
large-data ×1
opencv ×1
r-mice ×1
slice ×1