python與numpy使用的一些小tips(3)
1,python的數據類型與運算
我們主要討論的是python與numpy的[]的不同
python中[]表示的是列表,而不是矩陣!!!非常重要!!!其+號用於組合列表,*號用於重複列表。它是沒有-和/操作的
除
t = [2]na = [1]nprint(t/a)n輸出:nTraceback (most recent call last):n File "D:/huang/pix2pix_keras/t.py", line 14, in <module>n print(t/a)nTypeError: unsupported operand type(s) for /: list and listn
減法
t = [2]na = [1]nprint(t-a)n輸出:nTraceback (most recent call last):n File "D:/huang/pix2pix_keras/t.py", line 14, in <module>n print(t-a)nTypeError: unsupported operand type(s) for -: list and listn
加法
t = [2]na = [1]nprint(t+a)n輸出:n[2, 1]n
乘法
t = [2]nprint(t*8)n輸出:n[2, 2, 2, 2, 2, 2, 2, 2]n
那麼把列表強制轉換為int型運算可以嗎?答案是同樣不可以!!!原因是根本不可以轉換
t = int([2])na = int([1])nprint(t*a)n輸出:nTraceback (most recent call last):n File "D:/huang/pix2pix_keras/t.py", line 12, in <module>n t = int([2])nTypeError: int() argument must be a string, a bytes-like object or a number, not listn
那我們就是想讓列表的元素進行加減乘除呢?答案是先將其轉換到numpy數據類型在進行相應的運算!
t = np.array([2])na = np.array([1])nprint(t*a)n輸出:n[2]n
python其它數據類型出門左拐【python數據類型詳解 - Ruthless - 博客園】
2,numpy的數據類型與運算
我們主要討論的是numpy的減法,numpy竟然支持不同shape的數據減法!!!【?但是在它的官網上找了半天,也沒有找到它減法的官方說明】它是用廣播機制進行不同shape的減法的。兩個還不錯的參考【numpy中的廣播(broadcast) - CSDN博客】【operands could not be broadcast together with shapes】總結下來是這樣的:
- 讓所有輸入數組都向其中shape最長的數組看齊,shape中不足的部分都通過在前面加1補齊
- Numpy從最後開始往前逐個比較它們的維度(dimensions)大小。比較過程中,如果兩者的對應維度相同,或者其中之一(或者全是)等於1,比較繼續進行直到最前面的維度。否則,你將看到ValueError錯誤出現(如,"operands could not be broadcast together with shapes ...")。
- 當輸入數組的某個軸的長度為1時,將此軸複製到與另一個array相同
t = np.array([2,1,3])na = np.array([1])nprint(t-a)n輸出:n[1 0 2]n
- t,a:shape長度相同不需要補1
- a的維度是1,符合2
- 複製a與t相同a變為[1,1,1]
t = np.array([2,1,3])na = np.array([1,2])nprint(t-a)n輸出:nTraceback (most recent call last):n File "D:/huang/pix2pix_keras/t.py", line 14, in <module>n print(t-a)nValueError: operands could not be broadcast together with shapes (3,) (2,) n
- t,a:shape長度相同不需要補1
- a的shape[0]是2,而t的shape[0]是3。不符合2報錯
歡迎關注公眾號:huangxiaobai880
https://www.zhihu.com/video/926392235866619904
推薦閱讀:
※如何用python numpy產生一個正態分布隨機數的向量或者矩陣?
※為什麼numpy的array那麼快?
※復盤:隨機漫步
※Python 2.7安裝常用的科學計算分析包
※給深度學習入門者的Python快速教程 - numpy和Matplotlib篇