찾다
백엔드 개발파이썬 튜토리얼在机器学习科学计算领域,有哪些工具能让python和matlab一样好用?

我平时是做图像上的机器学习实验的,识别和检测之类的.从去年入学一直是用的matlab(老板和实验室同学们都用).但是似乎很多人觉得numpy+matplotlib+scipy比matlab更方便,而且我实际实验中也发现matlab的mex接口很难debug,,而且有时候要用到cuda的话也感觉很难调试,经常就把matlab搞crush了需要重启matlab调试,于是是尝试用python.

但是我感觉python很难用诶.我的环境是ubuntu14+pycharm
比如:
我经常需要在程序中设置断点去看看在图像中找的点对不对,在matlab中我可以在任意位置设置断点,然后在命令窗口输入命令去检查变量状态,这个功能我觉得非常方便
matlab断点断下来之后还可以在命令行中inshow()去看图像的状态
matlab的工作空间非常的简洁明了,变量的size和value都是一目了然的.

而使用python就让我感觉很不适应,设置断点之后要点debug才能在断点那里停下来(pycharm),而且断点停下之后watch的变量也有好多冗余信息啊,其实我就想看几个坐标几个特征值是不是make sense.

请问我是python的使用方法不对呢还是图像类的本来就适合matlab,还是其他什么原因?

回复内容:

2016年4月7日更新
目前来看,最好是将Anaconda与Pycharm结合起来。
Anaconda的优缺点在之前的答案里面说了。
Pycharm相比Spyder的优点是:
1 调试更方便,Spyder在其他文件里面设置断点,竟然无法停下来,必须得在主程序里面设置一个断点,然后“Step into”,如果嵌套比较深的话,这种方法特别麻烦。 Pycharm就没有这个问题。

2 Pycharm的“Reformat code”功能我特别喜欢,可以自动将你的代码排版规范,比如=两边各空一格,函数结尾空两行等等,不止能作用于一个文件,而且能一次性作用于整个项目!

Pycharm的缺点:
1 最新版本虽然支持了ipython,但功能体验比较差,1,反应比较慢 2 tab键经常不能弹出对象的属性与方法。

2 没有workspace。

所以,我的建议是结合使用这两个工具,基本上能达到MATLAB的使用体验。

2016年3月14日的补充
经过一段时间使用,也发现了Anaconda的缺点。特别是spyder。
1 在workspace里,对数据量偏大一点的变量进行查看,容易卡死,而MATLAB不会。
2 再workspace里,浮点数只显示小数点后三位,我经常要手工修改为显示为小数点后6位,不知道怎么修改默认设置。
3 断点调试明显没有MATLAB方便。
4 没有MATLAB那样方便的Profiler,用于发现代码运算瓶颈,而Spyder没有。
还有其他的,就不一一列举了,总之,在IDE上,Spyder相比MATLAB差远了,但我用Python,仍然会用Spyder,因为目前没有更好的替代品。


原答案:
千言万语汇成一句话: 安装Anaconda!
Anaconda非常适合做研究.Pycharm适合做开发,而不是研究.
为什么说Anaconda好呢?
1 自带了很多适合搞科学研究的库,比如numpy, scipy, pandas, matplotlib, sympy, sklearn等.
2 里面的spyder的界面非常像matlab的界面, 还支持单步调试.编辑器像matlab那样,可以创建cell(使用#%%,与matlab类似),方便查看与调试。
3 里面的ipython notebook, 非常适合交互和展示成果. 额.......试试WinPython? 有了它我已经好久没开matlab了 因为专业!像我这种程序员就天生受不了 Matlab 那种奇奇怪怪的语法,但是 Matlab 在它所擅长的领域里做得很好!非常好!!只要你不拿 Matlab 当 Python 用就好。

Python 是通用编程语言,不是 Matlab 那种专业货。既然是通用的,你拿它做科学计算当然没问题,但是你会发现它不是专门为此设计的,如果你不懂(通用)编程,那么你会发现有很多你所不理解的地方。

「在matlab中我可以在任意位置设置断点,然后在命令窗口输入命令去检查变量状态,这个功能我觉得非常方便
「matlab断点断下来之后还可以在命令行中inshow()去看图像的状态」

另请注意,Python 只是一门编程语言。PyCharm 是一个为 Python 开发而设计的 IDE,但不是 Python 天生和唯一的 IDE,更不是为科学计算所专门设计的。(不过有个叫 sagemath 的平台是专为科学计算设计的,其主语言是 Python。)

PyCharm 设置断点之后不能查看图像了吗?我没用过 PyCharm 所以不知道。但是我知道 Python 肯定是可以做到的。我调试过程中就会经常在有疑问的地方停下来,开个 Python 交互式命令行来仔细研究研究。有时我也会使用 pudb 这种专业(复杂)的调试工具。 python debug只用过log & gdb,断点之类从来没用过。 有这感觉就对了,也不枉费matlab卖那么贵! 只说明一点你还不善于使用python,如果能熟练运用就不会有你这种感受了。 知乎编程处女答,零基础裸学matlab半路继续裸学python,过程痛苦,对于为什么难深有体会:

被要求整改了,原来我是从一个没有计算机基础硬进入python的角度来描述学习的痛苦。可能这个角度比较片面,所以我修改了描述方法,以及简述了我自己怎么克服:

1.Matlab支持矩阵运算,惯坏了我们这群0计算机基础的白菜。写个模拟生成个随机数矩阵然后.*./甚至.^,简直爽快。 然后到python里些好处全没了,.*./变成了复杂和更复杂的循环,对于刚转到python上的人,算一个小噩梦

2.用包矩阵化解决掉第一个问题后,碰上第二个。Matlab函数想用就用,继续惯坏我们非计算机出身,要多美好有多美好。然后到了各类面向对象的语言里,先调用,再使用。向numpy这样函数大量重名的大包还不敢调用*,非得一个个调。有时还有分清对象,sub对象,方法。这个问题接触面相对象总是逃不掉的,有VBA基础可能会不那么吃力

3.然后只要一写循环就会碰到的:缩进,缩进,缩进!
Matlab自动缩进外扩分层,继续惯坏非CS简直美好
python我想用游标卡尺!(真不是网上的梗,我自发的想)。我自己通过写短循环多段和灰字注释能克服一部分

4.Matlab函数不懂直接help能告诉你函数的用法。
python里能看源代码,对于非计算机粗生的一开始会有阅读困难。好在各包的web都是良心的。

5.我这个弱逼还没遇到的路上的各种天坑。

我真的不是黑python,毕竟算法相同模拟一跑Matlab就掩面了。同时掩面的还有Matlab里那一横函数窗口,连存都要多存好几个。

以上都是非CS零基础学习多语言时被呵呵的肺腑之言。肯定会遭致程序员们的集体鄙视,所以被要求整改我没啥怨言。只是我有一个小小的奢望,奢望程序员大神们能够体会我们这些半路出家,又要学数学,又要学算法,还要学语言,还要学市场看case的弱逼金数生。我们经常嘲笑自己是WOW里幻想四修的德鲁伊(金融,数学,统计,计算机)四个天赋,奈何天赋不够还没有装备。我们当中甚至有完全不喜欢计算机的学生笔者自己强行看一段又一段的代码。可以指责我们不喜欢就不要学,但是我们金数的学生都深知短板效应的可怕,以及学金融不懂计算机是何其的幼稚。对于我们而言,编程的唯一的目的就是实现,在此奢望一些理解。我们很弱,不怕被喷,喷我们我们也能学到东西。 看完了楼上的答案。

先明确一点,题主做机器学习,所以以下都针对机器学习。

这个问题分两方面。

首先是语法角度。从纯语法上看,python 显然比Matlab 好很多,但对于机器学习,Matlab 已经足够用,能在保证能力强大的基础上足够简单,完全符合科研人员的需求。比如Matlab 里的类和对象是一团翔,但没关系,因为科研人员用不到。一般搞科研,只需要写个prototype ,能跑通就行,这时候Matlab “对面向对象的支持很差”反而成了一个优点,因为只需要面向过程即可,而面向过程的思路是非常自然而直观的。
当然,mex 不好写,GPU编程不方便,这确实是Matlab 的硬伤。另外Matlab 的运行效率比低,内存管理非常差,这也是一大缺点。

但题主的问题显然不是语言层次的问题。看描述,题主感觉python 不方便。从语言角度,numpy+matplotlib+scipy 是足够强大的,能满足科研人员的一切需求,而且作为脚本语言,python写起来也比java c++简单很多。那问题肯定出在工具上。
Matlab 的IDE 非常适合做科学计算,但PyCharm 只是个通用IDE,风格针对普通编程,并未对科学计算有特殊优化,非计算机出身可能用起来稍有不便。
所以我建议题主试试其他IDE。上面有人推荐Spyder,这个和Matlab 非常像,基本可以无缝接入。另外ipython notebook 也是神器,能写程序能作笔记能分发展示,非常好用。
不过我现在一般都用VS 的python 插件PTVS(Python Tools for Visual Studio),有强大的VS 作支持,代码补全啊、自动跳转啊、调试啊等等都极其方便,推荐给题主和大家。 如果matlab还没python好用,怎么对得起那几万块钱。 除开矩阵运算,python的表达能力比matlab高不知道多少。。(最近接一个matlab项目被这奇葩语法搞得痛不欲生的吐槽)

调试方面的话,不管pycharm还是anaconda我都只习惯看log。。断点什么的,不好用呢。。

传说python程序员的两次飞跃发生在学会decorator和unit test后,再有万能的import大法加持,你就会感受到蜕变了~~
성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
2 시간의 파이썬 계획 : 현실적인 접근2 시간의 파이썬 계획 : 현실적인 접근Apr 11, 2025 am 12:04 AM

2 시간 이내에 Python의 기본 프로그래밍 개념과 기술을 배울 수 있습니다. 1. 변수 및 데이터 유형을 배우기, 2. 마스터 제어 흐름 (조건부 명세서 및 루프), 3. 기능의 정의 및 사용을 이해하십시오. 4. 간단한 예제 및 코드 스 니펫을 통해 Python 프로그래밍을 신속하게 시작하십시오.

파이썬 : 기본 응용 프로그램 탐색파이썬 : 기본 응용 프로그램 탐색Apr 10, 2025 am 09:41 AM

Python은 웹 개발, 데이터 과학, 기계 학습, 자동화 및 스크립팅 분야에서 널리 사용됩니다. 1) 웹 개발에서 Django 및 Flask 프레임 워크는 개발 프로세스를 단순화합니다. 2) 데이터 과학 및 기계 학습 분야에서 Numpy, Pandas, Scikit-Learn 및 Tensorflow 라이브러리는 강력한 지원을 제공합니다. 3) 자동화 및 스크립팅 측면에서 Python은 자동화 된 테스트 및 시스템 관리와 ​​같은 작업에 적합합니다.

2 시간 안에 얼마나 많은 파이썬을 배울 수 있습니까?2 시간 안에 얼마나 많은 파이썬을 배울 수 있습니까?Apr 09, 2025 pm 04:33 PM

2 시간 이내에 파이썬의 기본 사항을 배울 수 있습니다. 1. 변수 및 데이터 유형을 배우십시오. 이를 통해 간단한 파이썬 프로그램 작성을 시작하는 데 도움이됩니다.

10 시간 이내에 프로젝트 및 문제 중심 방법에서 컴퓨터 초보자 프로그래밍 기본 사항을 가르치는 방법?10 시간 이내에 프로젝트 및 문제 중심 방법에서 컴퓨터 초보자 프로그래밍 기본 사항을 가르치는 방법?Apr 02, 2025 am 07:18 AM

10 시간 이내에 컴퓨터 초보자 프로그래밍 기본 사항을 가르치는 방법은 무엇입니까? 컴퓨터 초보자에게 프로그래밍 지식을 가르치는 데 10 시간 밖에 걸리지 않는다면 무엇을 가르치기로 선택 하시겠습니까?

중간 독서를 위해 Fiddler를 사용할 때 브라우저에서 감지되는 것을 피하는 방법은 무엇입니까?중간 독서를 위해 Fiddler를 사용할 때 브라우저에서 감지되는 것을 피하는 방법은 무엇입니까?Apr 02, 2025 am 07:15 AM

Fiddlerevery Where를 사용할 때 Man-in-the-Middle Reading에 Fiddlereverywhere를 사용할 때 감지되는 방법 ...

Python 3.6에 피클 파일을로드 할 때 '__builtin__'모듈을 찾을 수없는 경우 어떻게해야합니까?Python 3.6에 피클 파일을로드 할 때 '__builtin__'모듈을 찾을 수없는 경우 어떻게해야합니까?Apr 02, 2025 am 07:12 AM

Python 3.6에 피클 파일로드 3.6 환경 보고서 오류 : modulenotfounderror : nomodulename ...

경치 좋은 스팟 코멘트 분석에서 Jieba Word 세분화의 정확성을 향상시키는 방법은 무엇입니까?경치 좋은 스팟 코멘트 분석에서 Jieba Word 세분화의 정확성을 향상시키는 방법은 무엇입니까?Apr 02, 2025 am 07:09 AM

경치 좋은 스팟 댓글 분석에서 Jieba Word 세분화 문제를 해결하는 방법은 무엇입니까? 경치가 좋은 스팟 댓글 및 분석을 수행 할 때 종종 Jieba Word 세분화 도구를 사용하여 텍스트를 처리합니다 ...

정규 표현식을 사용하여 첫 번째 닫힌 태그와 정지와 일치하는 방법은 무엇입니까?정규 표현식을 사용하여 첫 번째 닫힌 태그와 정지와 일치하는 방법은 무엇입니까?Apr 02, 2025 am 07:06 AM

정규 표현식을 사용하여 첫 번째 닫힌 태그와 정지와 일치하는 방법은 무엇입니까? HTML 또는 기타 마크 업 언어를 다룰 때는 정규 표현식이 종종 필요합니다.

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

VSCode Windows 64비트 다운로드

VSCode Windows 64비트 다운로드

Microsoft에서 출시한 강력한 무료 IDE 편집기

SublimeText3 영어 버전

SublimeText3 영어 버전

권장 사항: Win 버전, 코드 프롬프트 지원!

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

mPDF

mPDF

mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)