網站首頁 編程語言 正文
numpy和matlab的幾點差異
Python numpy和matlab都是便捷靈活的科學計算語言,兩者具有很多相似之處,但也有一些混淆的地方,這里假定你熟悉matlab,但不了解numpy,記錄幾個numpy實例:
1、Numpy數組索引指定開始和結束時
不包括結束,也即下面的b和c是一樣的。
a = np.array([[1,2,3,4], [5,6,7,8], [9,10,11,12]])
b = a[:2, 1:2]
c = a[:2, 1]
2、Numpy.ndarray切片的修改會引起原矩陣的修改
這與matlab不同。
a = np.array([[1,2,3,4], [5,6,7,8], [9,10,11,12]])
b = a[:2, 1:3]
# [[2 3]
# ?[6 7]]
print(a[0, 1]) ? # Prints "2"
b[0, 0] = 77 ? ? # b[0, 0] is the same piece of data as a[0, 1]
print(a[0, 1]) ? # Prints "77"
3、numpy使用切片索引(例如1:2)不會產生降維
而使用整數索引(例如1)會產生降維。
import numpy as np
a = np.array([[1,2,3,4], [5,6,7,8], [9,10,11,12]])
row_r1 = a[1, :] ? ?# Rank 1 view of the second row of a
row_r2 = a[1:2, :] ?# Rank 2 view of the second row of a
print(row_r1, row_r1.shape) ?# Prints "[5 6 7 8] (4,)"
print(row_r2, row_r2.shape) ?# Prints "[[5 6 7 8]] (1, 4)"
col_r1 = a[:, 1]
col_r2 = a[:, 1:2]
print(col_r1, col_r1.shape) ?# Prints "[ 2 ?6 10] (3,)"
print(col_r2, col_r2.shape) ?# Prints "[[ 2]
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?# ? ? ? ? ?[ 6]
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?# ? ? ? ? ?[10]] (3, 1)"
4、不同于matlab
numpy的轉置對于1維數組的操作不發生變化。
v = np.array([1,2,3])
print(v) ? ?# Prints "[1 2 3]"
print(v.T) ?# Prints "[1 2 3]"
5、不同matlab對于矩陣預算要求大小一致
Numpy broadcasting直接支持操作(加減乘除等),要求前一個矩陣的最后一維度大小和待操作矩陣的大小相同。
x = np.array([[1,2,3], [4,5,6], [7,8,9], [10, 11, 12]])
v = np.array([1, 0, 1])
y = x + v ?# Add v to each row of x using broadcasting
print(y) ?# Prints "[[ 2 ?2 ?4]
? ? ? ? ? # ? ? ? ? ?[ 5 ?5 ?7]
? ? ? ? ? # ? ? ? ? ?[ 8 ?8 10]
python與matlab的優缺點
如果要問我選哪個,我會建議兩個都選。很多人喜歡拿python和matlab對比,然后得出哪個更好的結論。其實吧,夠用就好。
如果是學生,或者研究人員,比如研究信號處理,那么用matlab比較好,有大量現成工具箱和前人的成果可以借鑒。如果是產品化項目,那么python比較好,可以做web后臺,可以打包成應用程序,效率相對matlab也要高那么一點點。如果是信號、數據方面的工程人員,建議還是兩個都掌握吧,也不復雜,都是腳本式的語言,比C++什么的易學多了。
下面從兩者各自的應用做個對比。
1、python的優勢
Python相對于Matlab最大的優勢:免費。國內可能不是很在乎這個,但在國外是個很關鍵的問題。
Python次大的優勢:開源。你可以大量更改科學計算的算法細節。
可移植性,Matlab必然不如Python。但你主要做Research,這方面需求應當不高。
第三方生態,Matlab不如Python。比如3D的繪圖工具包,比如GUI,比如更方便的并行,使用GPU,Functional等等。長期來看,Python的科學計算生態會比Matlab好。
語言更加優美。另外如果有一定的OOP需求,構建較大一點的科學計算系統,直接用Python比用Matlab混合的方案肯定要簡潔不少。
python作為一種通用編程語言,可以做做Web,搞個爬蟲,編個腳本,寫個小工具用途很廣泛。
2、matlab的優勢
學術界大量使用matlab做仿真,做研究的話容易找到代碼參考;
語法相對python更靈活一些,matlab寫程序基本不用套路,所謂老夫擼matlab就一個字,干;
有simulink。有人說simulink沒什么用,其實還是挺有用的,比如通信建模,另外simulink可以生產DSP或者FPGA代碼,有的時候很有用。
3、兩者的區別
python是一種通用語言,而matlab更像是一個平臺。
4、怎樣選擇
如果做研究,可以matlab為主;如果做產品,可以python為主。當然也有matlab做成產品的,打包成exe什么的都不是事。
原文鏈接:https://blog.csdn.net/dou3516/article/details/81126701
相關推薦
- 2022-06-21 Android實現登錄注冊功能_Android
- 2023-02-27 ahooks?useInfiniteScroll源碼解析_React
- 2022-09-25 spring如何解決循環依賴
- 2022-09-06 React父組件調用子組件中的方法實例詳解_React
- 2023-06-18 C#?Double轉化為String時的保留位數及格式方式_C#教程
- 2023-11-17 Linux CentOS如何修改root用戶密碼
- 2022-05-16 C++STL之vector模板類詳解_C 語言
- 2022-06-29 python人工智能tensorflow函數tf.layers.dense使用方法_python
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支