标签: sparse-matrix

稀疏结账和svn:externals

我正在尝试对包含外部的文件夹进行稀疏检查,但没有任何外部检查.这个问题似乎表明这种行为可能是设计的,或者至少是不清楚行为应该是什么.从我的观点来看,显而易见的行为是外部被视为与任何其他目录一样,并且遵循相同的稀疏结账规则进行检查.

有没有办法解决这个问题,除了手动检查外部?

svn sparse-matrix svn-externals

7
推荐指数
1
解决办法
1133
查看次数

使用索引和值将值添加到Scipy稀疏矩阵

我正在进行电力系统分析程序,我需要使用稀疏矩阵.

有一个例程,我只需要通过以下调用填充稀疏矩阵:

self.A = bsr_matrix((val, (row,col)), shape=(nele, nbus), dtype=complex)
Run Code Online (Sandbox Code Playgroud)

因为这个矩阵不会随着时间而改变.另一个矩阵确实会随着时间而改变,我需要更新它.有没有办法,例如:

co     = [ 2, 3, 6]
row    = [ 5, 5, 5]
val    = [ 0.1 + 0.1j, 0.1 - 0.2j, 0.1 - 0.4j]
Run Code Online (Sandbox Code Playgroud)

我可以它们添加到先前初始化的稀疏矩阵中吗?怎么会有更多的pythonic方式呢?

谢谢

python numpy scipy sparse-matrix

7
推荐指数
1
解决办法
4890
查看次数

使用big.matrix对象计算欧几里德距离矩阵

我有类的对象,big.matrixR与尺寸778844 x 2.值均为整数(千米).我的目标是使用并计算欧几里德距离矩阵,big.matrix并将其作为类的对象big.matrix.我想知道是否有最佳方法.

我选择使用该类的原因big.matrix是内存限制.我可以将我转换big.matrix为类的对象matrix并使用计算欧几里德距离矩阵dist().但是,dist()将返回一个不会在内存中分配的大小的对象.

编辑

以下答案由bigmemory包装的作者和维护者John W. Emerson给出:

您可以使用我期望的大代数,但这对于Rcpp来说也是一个非常好的用例来源于sourceCpp(),非常简短.但简而言之,我们甚至不尝试提供高级功能(除了我们作为概念验证实现的基础知识).一旦你开始谈论内存不足,没有一种算法可以涵盖所有用例.

r matrix sparse-matrix bigdata r-bigmemory

7
推荐指数
1
解决办法
1758
查看次数

R - 数据帧 - 转换为稀疏矩阵

我有一个数据框,大部分是零(稀疏数据帧?)类似于

name,factor_1,factor_2,factor_3
ABC,1,0,0
DEF,0,1,0
GHI,0,0,1
Run Code Online (Sandbox Code Playgroud)

实际数据大约是90,000行,包含10,000个功能.我可以将其转换为稀疏矩阵吗?我期望通过利用稀疏矩阵而不是数据帧来获得时间和空间效率.

任何帮助,将不胜感激

更新#1:这是生成数据帧的一些代码.谢谢理查德提供这个

x <- structure(list(name = structure(1:3, .Label = c("ABC", "DEF", "GHI"),
                    class = "factor"), 
               factor_1 = c(1L, 0L, 0L), 
               factor_2 = c(0L,1L, 0L), 
               factor_3 = c(0L, 0L, 1L)), 
               .Names = c("name", "factor_1","factor_2", "factor_3"), 
               class = "data.frame",
               row.names = c(NA,-3L))
Run Code Online (Sandbox Code Playgroud)

r sparse-matrix dataframe

7
推荐指数
3
解决办法
7258
查看次数

忽略稀疏矩阵中的重复条目

我已经尝试初始化csc_matrixcsr_matrix(data, (rows, cols))文档建议的值列表中进行初始化.

sparse = csc_matrix((data, (rows, cols)), shape=(n, n))
Run Code Online (Sandbox Code Playgroud)

问题是,我实际上有用于产生方法data,rowscols载体引入重复对一些点.默认情况下,scipy会添加重复条目的值.但是,在我的情况下,这些重复项data对于给定的值具有完全相同的值(row, col).

我想要实现的是让scipy忽略第二个条目,如果已​​经存在,而不是添加它们.

忽略我可以改进生成算法以避免生成重复的事实,是否有参数或其他方法来创建忽略重复的稀疏矩阵?

目前两个条目与data = [4, 4]; cols = [1, 1]; rows = [1, 1];生成的稀疏矩阵,其值在(1,1)8同时所希望的值是4.

>>> c = csc_matrix(([4, 4], ([1,1],[1,1])), shape=(3,3))
>>> c.todense()
matrix([[0, 0, 0],
        [0, 8, 0],
        [0, 0, 0]])
Run Code Online (Sandbox Code Playgroud)

我也知道我可以通过使用二维numpy unique函数来过滤它们,但是列表非常大,所以这不是一个真正有效的选项.

问题的其他可能答案:有没有办法指定如何处理重复项?即保持minmax代替默认sum

python numpy duplicates scipy sparse-matrix

7
推荐指数
1
解决办法
2135
查看次数

这是什么类型的Python数组?它是否已经存在于Python中?

我有一个numpy数组:

m = array([[4, 0, 9, 0],
          [0, 7, 0, 0],
          [0, 0, 0, 0],
          [0, 0, 0, 5]])
Run Code Online (Sandbox Code Playgroud)

m列的4列标记为:

c = array([ 10, 20, 30, 40])
Run Code Online (Sandbox Code Playgroud)

我希望能够切割一个对象o:

o.vals[0,:] = array([4, 9])
o.vals[1,:] = array([7,])
o.vals[2,:] = array([])
o.vals[3,:] = array([5])
o.cols[0,:] = array([10, 30] )# the non-zero column labels from row 0
o.cols[1,:] = array([20,])
o.cols[2,:] = array([])
o.cols[3,:] = array([40])
Run Code Online (Sandbox Code Playgroud)

是否有现成的Python对象可以让我这样做?

我看过Scipy Sparse Matrices,但它并不是我想要的.

2015年8月17日的最新消息:我已经有了一些想法,想出了这个,这与我上周描述的几乎相同:

python arrays numpy scipy sparse-matrix

7
推荐指数
1
解决办法
99
查看次数

如何访问C++ Eigen稀疏矩阵中的特定(row,col)索引?

我在C++中使用Eigen中的稀疏矩阵.我想读取存储在特定行和列索引中的数据,就像我使用常规特征矩阵一样.

std::vector<Eigen::Triplet<double>> tripletList;

// TODO: populate triplet list with non-zero entries of matrix

Eigen::SparseMatrix<double> matrix(nRows, nCols);
matrix.setFromTriplets(tripletList.begin(), tripletList.end());

// TODO:  set iRow and iCol to be valid indices.

// How to read the value at a specific row and column index?
// double value = matrix(iRow, iCol);  // Compiler error
Run Code Online (Sandbox Code Playgroud)

我该如何进行这种索引操作?

c++ indexing matrix sparse-matrix eigen

7
推荐指数
1
解决办法
7270
查看次数

在Python中使用大稀疏矩阵的kNN

我有两个大的稀疏矩阵:

In [3]: trainX
Out[3]: 
<6034195x755258 sparse matrix of type '<type 'numpy.float64'>'
        with 286674296 stored elements in Compressed Sparse Row format>

In [4]: testX
Out[4]: 
<2013337x755258 sparse matrix of type '<type 'numpy.float64'>'
        with 95423596 stored elements in Compressed Sparse Row format>
Run Code Online (Sandbox Code Playgroud)

加载总共大约5 GB RAM.请注意,这些矩阵非常稀疏(占用0.0062%).

对于每一行testX,我想找到最近邻trainX,返回其相应的标签,在发现trainY. trainY是一个长度相同的列表,trainX并且有许多类.(一个类由1-5个单独的标签组成,每个标签是20,000个中的一个,但是类的数量与我现在要做的事情无关.)

我正在使用sklearnKNN算法来做到这一点:

from sklearn import neighbors

clf = neighbors.KNeighborsClassifier(n_neighbors=1)
clf.fit(trainX, trainY)
clf.predict(testX[0])
Run Code Online (Sandbox Code Playgroud)

甚至预测1项testX需要一段时间(即30-60秒之类的东西,但如果你乘以200万,那就变得非常不可能了).我的笔记本电脑有16GB的RAM开始交换一下,但确实设法完成了1项testX.

我的问题是,我怎么能这样做才能在合理的时间内完成?在大型EC2实例上说一晚?只是拥有更多的内存并防止交换速度足够快(我的猜测是否定的).也许我可以以某种方式利用稀疏性来加速计算?

谢谢.

python nearest-neighbor sparse-matrix scikit-learn

6
推荐指数
2
解决办法
8504
查看次数

在scipy中删除/设置稀疏矩阵的非零对角元素

说我想从a中删除对角线scipy.sparse.csr_matrix.这样做有效吗?我在sparsetools模块中看到有C返回对角线的功能.

基于其他SO答案在这里这里我目前的方法如下:

def csr_setdiag_val(csr, value=0):
    """Set all diagonal nonzero elements
    (elements currently in the sparsity pattern)
    to the given value. Useful to set to 0 mostly.
    """
    if csr.format != "csr":
        raise ValueError('Matrix given must be of CSR format.')
    csr.sort_indices()
    pointer = csr.indptr
    indices = csr.indices
    data = csr.data
    for i in range(min(csr.shape)):
        ind = indices[pointer[i]: pointer[i + 1]]
        j =  ind.searchsorted(i)
        # matrix has only elements up until diagonal …
Run Code Online (Sandbox Code Playgroud)

python scipy sparse-matrix diagonal

6
推荐指数
1
解决办法
1761
查看次数

在python中列出稀疏矩阵中的非零元素

如何以简单的一行代码(并且快速!)列出 a 的所有非零元素csr_matrix

我正在使用这段代码:

edges_list = list([tuple(row) for row in np.transpose(A.nonzero())])
weight_list = [A[e] for e in edges_list]
Run Code Online (Sandbox Code Playgroud)

但执行起来需要相当长的时间。

python sparse-matrix

6
推荐指数
2
解决办法
9256
查看次数