MatLab用户学习Python的想法
MatLab user thinking of learning Python
尽管我真的很喜欢MatLab,但我正在考虑放弃MatLab来学习Python。然而,我担心的是,让所有移动和独立的部分组合在一起可能是一个挑战,最终可能不值得。我还考虑过进入Visual Basic或Visual C++。最后,我不断回到MatLab的轻松状态。关于Python中的困难,有什么想法或评论吗?值得吗?
一个很好的起点是这个页面:SciPy入门,它概述了您可以用来从Python走向MatLab的科学工具库:特别是库numpy、SciPy、matplotlib和交互式工作环境IPython。特别是,numpy和matplotlib的设计与使用MatLab非常相似。
NumPy的数组类型为Python语言提供了一种有效的数据结构,可用于数值计算,例如操纵矩阵。NumPy还提供了基本的数值例程,例如用于查找特征向量的工具。
例如,在matlab中,您可以编写
eye(3)-diag([1 1],1)
并取回
1 -1 0
0 1 -1
0 0 1
在Python/numpy中,您可以编写
import numpy as np
np.eye(3)-np.diag([1,1],1)
并取回
array([[ 1., -1., 0.],
[ 0., 1., -1.],
[ 0., 0., 1.]])
带matplotlib
通过面向对象的界面或MATLAB用户熟悉的一组函数,您可以完全控制线条样式、字体属性、轴属性等。
在MatLab中进行绘图,您可以编写
x=linspace(-pi, pi, 100);
plot(x,sin(x))
在Python/numpy/matplotlib中,您可以编写
x=np.linspace(-np.pi, np.pi, 100)
import matplotlib.pyplot as plt
plt.plot(x,np.sin(x))
网络上有很多是为进行转换的人设计的,请参阅,例如Matlab用户的NumPy。
MATLAB®和NumPy/SciPy有很多共同点。但也有许多不同之处。NumPy和SciPy是为了用Python以最自然的方式进行数值和科学计算而创建的,而不是MATLAB®的克隆。本页面旨在收集有关差异的智慧,主要目的是帮助精通MATLAB®的用户成为精通NumPy和SciPy的用户。NumPyProConPage是另一个面向好奇的人的页面,他们正在考虑将Python与NumPy和SciPy一起使用,而不是MATLAB®,并希望看到利弊列表。
您可能还想考虑pylab,它将numpy和matplotlib合并到一个名称空间中,这样您就不必为上面使用的np
和plt
前缀而烦恼。例如,请参阅维基百科。
这个网站上有一些标签值得一看:例如numpy、scipy、matplotlib。stats.se上还有一个关于Python的问题,您可能会发现它很相关。如果你对统计学感兴趣,或者对读、写和操作表格数据感兴趣,你会对pandas感兴趣,它是Python对R数据框架的回答。
至于C++,它是一种很棒的语言,但与Python不属于同一类。这里不是讨论它们优缺点的合适地方,但简而言之,C++比Python更接近机器,如果你花时间写高度优化的代码。在Python中,你可以让代码快速工作,将独立的部分粘合在一起,并可以轻松地从任何地方读取和写入数据,但Python代码有时运行速度会很慢(就像Matlab一样——如果你在numpy中进行矢量化,它会很快,否则就会被解释和缓慢)。您可能偶尔想要使用Python调用C中定义的函数的能力来加快慢Python代码的速度,请参阅,例如,这个问题。(我将把Visual Basic放在一边,因为它似乎并不相关。)
最后,正如评论中所指出的,回答任何细节都需要确切地知道你的要求是什么,不仅是你想做什么,还有你想和谁一起做,以及你有多少时间和金钱可以投资。
是的,Python值得学习。这是我十多年前学的第一门主要语言。它在Linux系统中被大量使用,尤其是在系统启动时。此外,该语言的库也得到了很好的开发。如果你想设计一款游戏,PyGame已经存在很长时间了,而且这个过程非常简单。如果你想为网络编程,Twisted是一个很好的库。他们的网络框架Django是个美人。
我发现Python是一门非常喜欢英语的语言。
如果你愿意的话,你也可以在Ruby达到顶峰。Ruby允许许多不同风格的编程。因此,您可以像在Ruby中使用其他语言一样进行编程(我的意思是严格意义上的风格)。此外,Ruby拥有我所见过的最"免费"的在线学习和使用语言的资源。
我喜欢这两种语言。但我的回答是"是的!"Python是一门很棒的第一语言。
这完全取决于你想做什么,以及你喜欢什么方法。
您可以在这里找到许多数学绘图库:https://wiki.python.org/moin/NumericAndScientific/Plotting
其中许多可能是Matlab的优秀替代方案。
Python非常适合像Arduino那样的固件编程。C++对于编程软件来说是非常强大的;应用程序。如果您想对硬件进行编程,请使用python。如果你想编程软件,使用C++。我在学习C++,它很棒。
- 如何运行位于boost/libs/python/example/tutorial目录中的hello.cpp和Jamfil
- Pybind11:将元组列表从Python传递到C++
- C++如何通过用户输入删除列表元素
- 创建一个函数以在输入为负数或零时输出字符串.第一次执行用户定义的函数
- 如何在c++中使用引用实现类似python的行为
- 是否可以通过C++扩展强制多个python进程共享同一内存
- 如何使用用户输入在C++中正确填充2D数组
- 递归列出所有目录中的C++与Python与Ruby的性能
- C++MySQL C api用户输入行
- IPC使用多个管道和分支进程来运行Python程序
- 使用用户定义函数的字符串反转
- 用户定义函数中的指针和输入
- 为什么即使使用-cudart-static进行编译,库用户仍然需要链接到cuda运行时
- 从python中调用C++函数并获取返回值
- 如何只允许用户输入正整数
- 如何通过 C 在用户定义的结构中编写双数组并使用 CTYPE 传递给 Python
- 在扩展模块中为用户定义的 python 类提升 Python to_python_converter
- 将Boost Python用于C++接受用户输入的类
- Python:将用户定义的函数作为输入,同时保持源代码不可访问
- MatLab用户学习Python的想法