标签: matrix

循环循环

一位朋友需要一种算法让他循环遍历NxM矩阵的元素(N和M是奇数).我提出了一个解决方案,但我想知道我的同事是否可以提出更好的解决方案.

我发布我的解决方案作为这个问题的答案.

示例输出:

对于3x3矩阵,输出应为:

(0,0)(1,0)(1,1)(0,1)(-1,1)(-1,0)( - 1,-1)(0,-1)(1,-1) )

3x3矩阵

此外,该算法应支持非平方矩阵,因此例如对于5x3矩阵,输出应为:

(0,0)(1,0)(1,1)(0,1)(-1,1)(-1,0)( - 1,-1)(0,-1)(1,-1) )(2,-1)(2,0)(2,1)(-2,1)(-2,0)( - 2,-1)

5x3矩阵

algorithm loops matrix spiral

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

Java矩阵数学库的性能?

我们正在计算运行时受矩阵运算约束的东西.(如果感兴趣,请参阅下面的一些细节.)这次经历提出了以下问题

民间有没有使用Java库的矩阵数学性能经验(例如,乘法,逆等)?例如:

我搜查了一下,一无所获.


我们的速度比较详情:

我们使用的是英特尔FORTRAN(ifort(IFORT)10.1 20070913).我们使用Apache commons math 1.2矩阵运算在Java(1.6)中重新实现了它,并且它同意所有的精度数字.(我们有理由在Java中想要它.)(Java双打,Fortran真*8).Fortran:6分钟,Java 33分钟,同样的机器.jvisualm profiling显示了在RealMatrixImpl中花费了大量时间.{getEntry,isValidCoordinate}(在未发布的Apache commons math 2.0中似乎已经消失了,但2.0并不快).Fortran正在使用Atlas BLAS例程(dpotrf等).

显然这可能取决于我们在每种语言中的代码,但我们相信大部分时间都在等效的矩阵运算中.

在其他几个不涉及库的计算中,Java并没有慢得多,有时甚至更快.

java math performance matrix

147
推荐指数
8
解决办法
11万
查看次数

Numpy矩阵到数组

我正在使用numpy.我有一个包含1列和N行的矩阵,我想从N个元素中获取一个数组.

例如,如果我有M = matrix([[1], [2], [3], [4]]),我想得到A = array([1,2,3,4]).

为了实现它,我使用A = np.array(M.T)[0].有谁知道更优雅的方式来获得相同的结果?

谢谢!

python arrays numpy matrix

140
推荐指数
6
解决办法
22万
查看次数

在JavaScript中转置2D数组

我有一个数组数组,如:

[
    [1,2,3],
    [1,2,3],
    [1,2,3],
]
Run Code Online (Sandbox Code Playgroud)

我想转置它以获得以下数组:

[
    [1,1,1],
    [2,2,2],
    [3,3,3],
]
Run Code Online (Sandbox Code Playgroud)

使用循环以编程方式执行此操作并不困难:

function transposeArray(array, arrayLength){
    var newArray = [];
    for(var i = 0; i < array.length; i++){
        newArray.push([]);
    };

    for(var i = 0; i < array.length; i++){
        for(var j = 0; j < arrayLength; j++){
            newArray[j].push(array[i][j]);
        };
    };

    return newArray;
}
Run Code Online (Sandbox Code Playgroud)

然而,这看起来很笨重,我觉得应该有一种更简单的方法.在那儿?

javascript arrays transpose matrix

135
推荐指数
10
解决办法
7万
查看次数

R内存管理/不能分配大小为n Mb的向量

我遇到了试图在R中使用大对象的问题.例如:

> memory.limit(4000)
> a = matrix(NA, 1500000, 60)
> a = matrix(NA, 2500000, 60)
> a = matrix(NA, 3500000, 60)
Error: cannot allocate vector of size 801.1 Mb
> a = matrix(NA, 2500000, 60)
Error: cannot allocate vector of size 572.2 Mb # Can't go smaller anymore
> rm(list=ls(all=TRUE))
> a = matrix(NA, 3500000, 60) # Now it works
> b = matrix(NA, 3500000, 60)
Error: cannot allocate vector of size 801.1 Mb # But that is all there …
Run Code Online (Sandbox Code Playgroud)

memory-management r vector matrix r-faq

131
推荐指数
7
解决办法
38万
查看次数

NumPy Matrix与Array类的乘法有何不同?

numpy文档建议使用数组而不是矩阵来处理矩阵.但是,与octave(我直到最近使用)不同,*不执行矩阵乘法,你需要使用函数matrixmultipy().我觉得这使得代码非常难以理解.

有人分享我的观点,并找到了解决方案吗?

python arrays numpy matrix matrix-multiplication

129
推荐指数
7
解决办法
23万
查看次数

选择满足条件的矩阵行

在R中有一个矩阵:

     one two three four
 [1,]   1   6    11   16
 [2,]   2   7    12   17
 [3,]   3   8    11   18
 [4,]   4   9    11   19
 [5,]   5  10    15   20
Run Code Online (Sandbox Code Playgroud)

我想提取其行有第三列= 11的子矩阵.这是:

      one two three four
 [1,]   1   6    11   16
 [3,]   3   8    11   18
 [4,]   4   9    11   19
Run Code Online (Sandbox Code Playgroud)

我想在没有循环的情况下这样做.我是R的新手,所以这可能非常明显,但文档往往有些简洁.

select r matrix submatrix

128
推荐指数
5
解决办法
37万
查看次数

如何在python中找到numpy矩阵的长度(或尺寸,大小)?

对于python中的numpy矩阵

from numpy import matrix
A = matrix([[1,2],[3,4]])
Run Code Online (Sandbox Code Playgroud)

如何找到此矩阵的行(或列)的长度?同样,我怎么知道行数或列数?

到目前为止,我发现的唯一解决方案是:

len(A)
len(A[:,1])
len(A[1,:])
Run Code Online (Sandbox Code Playgroud)

它分别返回2,2和1.从此我收集到的len()将返回行数,因此我总是可以使用转置,len(A.T)列数.然而,这感觉不令人满意和任意,因为在阅读该行时len(A),这应该返回行数并不是很明显.它实际上与len([1,2])2D python数组的工作方式不同,因为它会返回2.

那么,有没有更直观的方法来找到矩阵的大小,或者这是我最好的?

python numpy matrix

122
推荐指数
2
解决办法
46万
查看次数

将三列数据帧重新整形为矩阵("长"到"宽"格式)

我有一个data.frame看起来像这样的.

x a 1 
x b 2 
x c 3 
y a 3 
y b 3 
y c 2 
Run Code Online (Sandbox Code Playgroud)

我想以矩阵形式这样做,所以我可以将它送到热图以制作情节.结果应该类似于:

    a    b    c
x   1    2    3
y   3    3    2
Run Code Online (Sandbox Code Playgroud)

我已尝试cast从reshape包中尝试编写手动函数来执行此操作,但我似乎无法正确执行此操作.

r matrix plyr reshape dataframe

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

使用R查找包含最大值的行索引

给定以下矩阵假设我想在第二列中找到最大值:

mat <- matrix(c(1:3,7:9,4:6), byrow = T, nc = 3)
mat
     [,1] [,2] [,3]
[1,]    1    2    3
[2,]    7    8    9
[3,]    4    5    6
Run Code Online (Sandbox Code Playgroud)

我知道max(mat[,2])会返回8.如何返回行索引,在这种情况下第二行?

r matrix

117
推荐指数
2
解决办法
14万
查看次数