由于内存错误,无法将其转换为 numpy 数组。
考虑这个简单的小标题
\n\n> data_frame(col1 = c(1,2,3), col2 = c(3,2,NA))\n# A tibble: 3 x 2\n col1 col2\n <dbl> <dbl>\n1 1 3\n2 2 2\n3 3 NA\nRun Code Online (Sandbox Code Playgroud)\n\n将其转换为稀疏矩阵的最有效方法是什么?\n我尝试了类似的方法
\n\n> data_frame(col1 = c(1,2,3), col2 = c(3,2,NA)) %>% \n+ as(., \'sparseMatrix\')\nError in as(from, "CsparseMatrix") : \n no method or default for coercing \xe2\x80\x9ctbl_df\xe2\x80\x9d to \xe2\x80\x9cCsparseMatrix\xe2\x80\x9d\nRun Code Online (Sandbox Code Playgroud)\n\n没有成功。按照建议尝试:
\n\ny <- purrr::reduce(cbind2, map(df, \'Matrix\', sparse = TRUE))\nRun Code Online (Sandbox Code Playgroud)\n\n也不行。
\n\n使用 tidyverse 有什么好主意吗?\n谢谢!
\n我正在寻找一个命令或技巧来将两个数组转换为稀疏矩阵.这两个数组包含x值和y值,它们给出了笛卡尔坐标系中的坐标.我想对坐标进行分组,如果值在x轴上的某个值和y轴之间.
% MATLAB
x_i = find(x > 0.1 & x < 0.9);
y_i = find(y > 0.4 & y < 0.8);
%Then I want to find indicies which are located in both x_i and y_i
Run Code Online (Sandbox Code Playgroud)
这个小技巧有一个简单的方法吗?
为什么我在我的代码中得到错误 - 我创建了两个方法,randomGen生成一个随机数,matrixGen用随机数创建矩阵.我得到不兼容的类型错误.如果有人可以请我指出正确的方向我可能做错了什么..我还在学习阶段..继承我的代码:
import java.util.Random;
public class sparse{
static int matrix [][] = new int[6][6];
public static int randomGen(){
int rA;
Random r = new Random();
rA = r.nextInt(100);
return rA;
}
public static int[][] matrixGen(){
for(int i=0; matrix[i].length < i; i++){
for(int j=0; matrix[j].length <j; j++){
matrix[i] = matrix[i].randomGen();
matrix[j] = matrix[j].randomGen();
}
}
return matrix[i][j];
}
public static void main(String args[]){
new sparse();
}
}
Run Code Online (Sandbox Code Playgroud) 大多数答案仅针对已经回答的有关汉明重量的问题,但忽略了关于find稀疏性的观点.显然,通过夏嘉曦答案在这里解决了约找到一点-但我现在还无法验证它.我在这里的答案并没有利用其他答案的独创性,比如位移,但足够好的例子答案.
输入
>> mlf=sparse([],[],[],2^31+1,1);mlf(1)=10;mlf(10)=111;mlf(77)=1010;
>> transpose(dec2bin(find(mlf)))
ans =
001
000
000
011
001
010
101
Run Code Online (Sandbox Code Playgroud)
目标
1
0
0
2
1
1
2
Run Code Online (Sandbox Code Playgroud)
使用稀疏结构快速计算二进制数的1?
我想从例如稀疏矩阵的第i行的非零值中减去矢量的第i个值
[,1] [,2] [,3] [,4]
[1,] 0 0 4 0
[2,] 0 5 0 3
[3,] 1 2 0 0
Run Code Online (Sandbox Code Playgroud)
这是我试图减去的向量:
[1] 1 2 3
Run Code Online (Sandbox Code Playgroud)
所以我最终需要的是:
[,1] [,2] [,3] [,4]
[1,] 0 0 3 0
[2,] 0 3 0 1
[3,] -2 -1 0 0
Run Code Online (Sandbox Code Playgroud)
我试过这个使用申请,但一直无法解决问题,它并没有让我回想起我想要的东西.矩阵的尺寸太大,我不想使用循环.感谢致敬.
我需要乘以两个大矩阵,X并且Y.通常X具有~500K行和~18K列,并Y具有~18K行和~18K列.X预计矩阵是稀疏的,并且矩阵Y预计是稀疏/密集的.在Scala/Apache Spark中执行此乘法的理想方法是什么?
scala sparse-matrix large-data matrix-multiplication apache-spark
我在Matlab中有一个矩阵问题.
我有1百万x 1百万稀疏矩阵,我一直在使用null.通常,问题是我的内存不足.我试过svds(svd用于稀疏矩阵),但我的问题是我的内存不足.对于null()Matlab中的函数,是否有可能解决大型稀疏矩阵的问题?
在下面的示例中,我正在创建一个numpy带有零的大对象,在对角线上放置一个随机数,然后转换为scipy稀疏矩阵。我的内存使用情况报告来自任务管理器。
>>> import sys, random
>>> import numpy as np
>>> from scipy import sparse
## Memory in use at this point: 3.1 Gb
>>> m = np.zeros(shape = (40000, 40000), dtype = float)
>>> sys.getsizeof(m)
12800000112
## Memory in use at this point: 3.3 Gb
>>> for i in range(40000):
m[i][i] = round(random.random(),3)
>>> sys.getsizeof(m)
12800000112
## Memory in use at this point: 3.3 Gb
>>> mSp = sparse.csr_matrix(m)
>>> sys.getsizeof(mSp)
56
## Memory in …Run Code Online (Sandbox Code Playgroud) 我有一个Matrix类
template <typename T>
class Matrix
{
public:
const size_t rows;
const size_t cols;
const std::map<std::array<int, 2>, T> data;
Matrix(int a, int b) : rows(a), cols(b)
{
}
};
Run Code Online (Sandbox Code Playgroud)
这是如下初始化:
Matrix<double> M(5,5);
Run Code Online (Sandbox Code Playgroud)
创建一个5x5矩阵.
我想像这样为地图赋值:
M[{1,2}] = 1;
Run Code Online (Sandbox Code Playgroud)
我将如何以最易读的方式做到这一点?我不知道如何让下标和赋值运算符一起工作.