標籤:

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】總結下來是這樣的:

  1. 讓所有輸入數組都向其中shape最長的數組看齊,shape中不足的部分都通過在前面加1補齊
  2. Numpy從最後開始往前逐個比較它們的維度(dimensions)大小。比較過程中,如果兩者的對應維度相同,或者其中之一(或者全是)等於1,比較繼續進行直到最前面的維度。否則,你將看到ValueError錯誤出現(如,"operands could not be broadcast together with shapes ...")。
  3. 當輸入數組的某個軸的長度為1時,將此軸複製到與另一個array相同

t = np.array([2,1,3])na = np.array([1])nprint(t-a)n輸出:n[1 0 2]n

  1. t,a:shape長度相同不需要補1
  2. a的維度是1,符合2
  3. 複製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

  1. t,a:shape長度相同不需要補1
  2. 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篇

TAG:Python | numpy |