标签: matrix

Strassen的矩阵乘法算法

有人可以用直观的方式解释strassen的矩阵乘法算法吗?我已经完成了(好了,试图通过)书中的解释和维基,但它没有点击楼上.网络上使用大量英语而非正式表示法等的任何链接也会有所帮助.是否有任何类比可以帮助我从头开始构建这个算法而不必记住它?

algorithm matrix multiplication strassen

30
推荐指数
3
解决办法
3万
查看次数

组合不同长度的(cbind)向量

我有几个长度不等的向量,我想要cbind他们.我把矢量放到一个列表中,我试图结合使用do.call(cbind, ...):

nm <- list(1:8, 3:8, 1:5)
do.call(cbind, nm)

#      [,1] [,2] [,3]
# [1,]    1    3    1
# [2,]    2    4    2
# [3,]    3    5    3
# [4,]    4    6    4
# [5,]    5    7    5
# [6,]    6    8    1
# [7,]    7    3    2
# [8,]    8    4    3
# Warning message:
#   In (function (..., deparse.level = 1)  :
#         number of rows of result is not a multiple of vector …
Run Code Online (Sandbox Code Playgroud)

merge r list matrix

30
推荐指数
2
解决办法
4万
查看次数

如何获得整个矩阵,数组或数据帧的均值,中位数和其他统计数据?

我知道这是一个基本问题,但由于一些奇怪的原因,我无法找到答案.

我应该如何在整个数组,矩阵或数据帧上应用基本统计函数,如均值,中位数等,以获得唯一答案,而不是行或列上的向量

arrays r matrix dataframe r-faq

30
推荐指数
2
解决办法
7万
查看次数

任意元素类型的Haskell线性代数矩阵库

我正在寻找具有以下功能的Haskell线性代数库:

  • 矩阵乘法
  • 矩阵添加
  • 矩阵换位
  • 排名计算
  • 矩阵求逆是一个优点

并具有以下属性:

  • 任意元素(标量)类型(在那些特定元素类型 Storable实例).我的元素是一个实例Num,另外可以计算乘法逆.元素在数学上形成有限域(2 256).这应该足以实现上述功能.
  • 任意矩阵大小(我可能需要100x100之类的东西,但是矩阵大小将取决于用户的输入,所以除了内存或可用的计算能力之外,它不应受其他任何限制)
  • 尽可能快,但我知道,对于任意元素库可能会不喜欢这样做,因为任意(非的间接的工作(通过FFI接口),一个C/Fortran语言库执行Int,Double或类似的)类型.触摸元素时,至少有一个指针被解除引用
  • (用Haskell编写,这对我来说不是真正的要求,但由于我的元素不是Storable实例,所以库必须用Haskell编写)

我已经非常努力地评估了看起来很有希望的一切(Hackage上的大多数库都直接表明它们不适合我).特别是我用以下方法编写了测试代码

  • hmatrix,假设Storable元素
  • Vec,但文档说明:

    低维度:虽然维度仅受GHC处理的限制,但该库适用于2,3维和4维.对于一般线性代数,请查看优秀的hmatrix库并进行绑定

我查看了更多库的代码和文档,但似乎没有什么能满足我的需求:-(.

更新

由于似乎什么都没有,我在GitHub上开始了一个项目,旨在开发这样一个库.当前状态非常简约,根本没有针对速度进行优化,只有最基本的功能才有测试,因此应该可以工作.但是,如果您有兴趣使用或帮助开发它:联系我(您将在我的网站上找到我的邮件地址)或发送拉取请求.

haskell matrix linear-algebra

30
推荐指数
1
解决办法
1323
查看次数

最成熟的稀疏矩阵包为R?

对于R,至少有两个稀疏矩阵包.我正在调查这些因为我正在使用太大而稀疏的数据集以适应具有密集表示的内存.我想要基本的线性代数例程,以及轻松编写C代码来操作它们的能力.哪个库最成熟,最好用?

到目前为止我发现了

  • Matrix有许多反向依赖,暗示它是最常用的.
  • SparseM没有那么多的反向deps.
  • 各种图库可能都有自己的(隐式)版本; 例如igraph网络(后者是statnet的一部分).这些太专业了,不能满足我的需求.

有人有这方面的经验吗?

通过在RSeek.org上搜索一下,Matrix包似乎是最常提到的一个.我经常认为CRAN任务视图是相当权威的,而多变量任务视图提到了Matrix和SparseM.

statistics r matrix sparse-matrix

29
推荐指数
2
解决办法
9002
查看次数

缓存高效矩阵转置程序?

所以转置矩阵的显而易见的方法是使用:

  for( int i = 0; i < n; i++ )

    for( int j = 0; j < n; j++ )

      destination[j+i*n] = source[i+j*n];
Run Code Online (Sandbox Code Playgroud)

但是我想要一些能利用局部性和缓存阻塞的东西.我正在查找它并且找不到可以执行此操作的代码,但我被告知它应该是对原始的非常简单的修改.有任何想法吗?

编辑:我有一个2000x2000矩阵,我想知道如何使用两个for循环更改代码,基本上将矩阵拆分为我单独转置的块,比如2x2块或40x40块,并查看哪个块大小最有效.

编辑2:矩阵以列主要顺序存储,即对于矩阵

a1 a2    
a3 a4
Run Code Online (Sandbox Code Playgroud)

存储为a1 a3 a2 a4.

algorithm caching matrix

29
推荐指数
4
解决办法
5万
查看次数

Scipy稀疏矩阵 - 不同实现的目的和用法

Scipy有许多不同类型的稀疏矩阵.这些类型之间最重要的区别是什么,它们的预期用途有何不同?

我正在基于Matlab中的示例代码1在python中开发代码.代码的一部分使用稀疏矩阵 - 在Matlab中似乎有一个(恼人的)类型,我试图找出我应该在python中使用哪种类型2.


1:这是一堂课.大多数人都在使用Matlab进行项目,但我喜欢创造不必要的工作和混乱 - 显然.

2:这是一个学术问题:我使用" CSR "格式正常运行代码,但我很有兴趣知道最佳用法是什么.

python matrix scipy sparse-matrix

29
推荐指数
1
解决办法
8498
查看次数

将两个列表转换为矩阵

我会尝试尽可能清楚,然后我将首先解释为什么我要将两个数组转换为矩阵.

要绘制投资组合与市场指数的表现,我需要一个像这种格式的数据结构:

[[portfolio_value1, index_value1]
 [portfolio_value2, index_value2]]
Run Code Online (Sandbox Code Playgroud)

但我将数据作为两个独立的1-D阵列:

portfolio = [portfolio_value1, portfolio_value2, ...]
index = [index_value1, index_value2, ...]
Run Code Online (Sandbox Code Playgroud)

那么如何将第二个场景转换为第一个场景.我试图np.insert将第二个数组添加到我在python shell中的测试矩阵中,我的问题是将第一个数组转换为单个列矩阵.

如果没有命令性循环如何实现这一点的任何帮助将是伟大的.

python arrays numpy matrix

29
推荐指数
1
解决办法
8万
查看次数

将矩阵转换为3列表('反向枢轴','展开','展平','正常化')

我需要FIRST在表格中转换Excel矩阵LATER:

第一:

    P1  P2  P3  P4
F1  X
F2  X   X
F3      X       X
F4      X   X
Run Code Online (Sandbox Code Playgroud)

稍后:

F   P   VALUE
F1  P1  X
F1  P2
F1  P3
F1  P4
F2  P1  X
F2  P2  X
F2  P3
F2  P4
F3  P1
F3  P2  X
F3  P3
F3  P4  X
F4  P1
F4  P2  X
F4  P3  X
F4  P4
Run Code Online (Sandbox Code Playgroud)

excel pivot-table unpivot matrix powerquery

29
推荐指数
2
解决办法
7万
查看次数

创建共生矩阵

我正在尝试解决共同出现矩阵的问题.我有一个事务和项目的数据文件,我想看到一起显示项目的事务数量的矩阵.

我是R编程的新手,我很乐意找到R所有的快捷方式,而不是创建特定的循环(我以前使用的是C年前,现在只坚持使用Excel宏和SPSS).我已经检查过这里的解决方案,但是没有找到一个有效的方法(最接近的是这里给出的解决方案:使用SAC的共生矩阵? - 但是当我使用projection_tm时它产生了一条错误信息,我怀疑cbind不是'在我的案例中成功.

基本上我有一个包含以下内容的表:

TrxID Items Quant
Trx1 A 3
Trx1 B 1
Trx1 C 1
Trx2 E 3
Trx2 B 1
Trx3 B 1
Trx3 C 4
Trx4 D 1
Trx4 E 1
Trx4 A 1
Trx5 F 5
Trx5 B 3
Trx5 C 2
Trx5 D 1, etc.
Run Code Online (Sandbox Code Playgroud)

我想创建类似的东西:

   A B C D E F
A  0 1 1 0 1 1
B  1 0 3 1 1 0
C  1 3 0 1 0 0 …
Run Code Online (Sandbox Code Playgroud)

r matrix

28
推荐指数
5
解决办法
2万
查看次数