python能做MATLAB等价的矩阵运算吗?

bprjcwpo  于 2022-12-19  发布在  Matlab
关注(0)|答案(2)|浏览(142)

我已经在MATLAB中实现了一些代码,这些代码可以对包含数值数据和字符串的216x216矩阵进行操作。我对这些矩阵所做的操作大多类似于过滤某个阈值以上的矩阵,找到所有高于某个值的矩阵索引,找到高于X的值列表,然后找到它们之间的连续差值。一些字符串替换操作。2做矩阵点积等。3我需要访问数千个文件来生成这些矩阵(我在MATLAB中使用dlmread)。
现在,我需要在任何其他语言,通常是与操作系统捆绑,如Perl,C或Python或开源语言实现上述项目。
我做了一个简短的搜索,发现Python是一个很好的研究工具。Python是否有一些这样的MATLAB等价物用于矩阵运算(如将文件直接读入数组、find、dlmwrite等)
因为我的代码已经有很多循环没有这些MATLAB函数的代码将变得更加混乱和难以维护。
或者你能指出其他的替代方案吗?我熟悉小Perl,但不熟悉Python或R。

a8jjtwal

a8jjtwal1#

this page comparing NumPy and Matlab开始。
下面是一些关于你的帖子的例子:

In [5]: import scipy

In [6]: X = scipy.randn(3,3)

In [7]: X
Out[7]: 
array([[-1.16525755,  0.04875437, -0.91006082],
       [ 0.00703527,  0.21585977,  0.75102583],
       [ 1.12739755,  1.12907917, -2.02611163]])

In [8]: X>0
Out[8]: 
array([[False,  True, False],
       [ True,  True,  True],
       [ True,  True, False]], dtype=bool)

In [9]: scipy.where(X>0)
Out[9]: (array([0, 1, 1, 1, 2, 2]), array([1, 0, 1, 2, 0, 1]))

In [10]: X[X>0] = 99

In [11]: X
Out[11]: 
array([[ -1.16525755,  99.        ,  -0.91006082],
       [ 99.        ,  99.        ,  99.        ],
       [ 99.        ,  99.        ,  -2.02611163]])

In [12]: Y = scipy.randn(3,2)

In [13]: scipy.dot(X, Y)
Out[13]: 
array([[-124.41803568,  118.42995937],
       [-368.08354405,  199.67131528],
       [-190.13730231,  161.54715769]])

(无耻插件:a comparison I once made between Python and Matlab.

vmdwslir

vmdwslir2#

你可能想看看NumPy/SciPy,它们可以帮助你做你想做的事情。另外,有相当数量的用户,这将使你更容易在需要时获得帮助。

相关问题