第4章 NumPy基礎:數組和矢量計算

Tips:

1.ndarray是一個通用的同構數據多維容器,也就是說,其中的所有元素必須是相同類型的。每個數組都有一個shape(一個表示各維度大小的元組)和一個dtype(一個用于說明數組數據類型的對象):

In [17]: data.shape
Out[17]: (2, 3)

In [18]: data.dtype
Out[18]: dtype('float64')
In [19]: data1 = [6, 7.5, 8, 0, 1]

In [20]: arr1 = np.array(data1)

In [21]: arr1
Out[21]: array([ 6. ,  7.5,  8. ,  0. ,  1. ])

2.調用astype總會創(chuàng)建一個新的數組(一個數據的備份),即使新的dtype與舊的dtype相同。

In [44]: numeric_strings = np.array(['1.25', '-9.6', '42'], dtype=np.string_)

In [45]: numeric_strings.astype(float)
Out[45]: array([  1.25,  -9.6 ,  42.  ])

3.傳播

In [60]: arr = np.arange(10)

In [61]: arr
Out[61]: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

In [62]: arr[5]
Out[62]: 5

In [63]: arr[5:8]
Out[63]: array([5, 6, 7])

In [64]: arr[5:8] = 12

In [65]: arr
Out[65]: array([ 0,  1,  2,  3,  4, 12, 12, 12,  8,  9])

如上所示,當你將一個標量值賦值給一個切片時(如arr[5:8]=12),該值會自動傳播(也就說后面將會講到的“廣播”)到整個選區(qū)。跟列表最重要的區(qū)別在于,數組切片是原始數組的視圖。這意味著數據不會被復制,視圖上的任何修改都會直接反映到源數組上。
作為例子,先創(chuàng)建一個arr的切片:

In [66]: arr_slice = arr[5:8]

In [67]: arr_slice
Out[67]: array([12, 12, 12])

In [68]: arr_slice[1] = 12345

In [69]: arr
Out[69]: array([    0,     1,     2,     3,     4,    12, 12345,    12,     8,   
  9])

如果你剛開始接觸NumPy,可能會對此感到驚訝(尤其是當你曾經用過其他熱衷于復制數組數據的編程語言)。由于NumPy的設計目的是處理大數據,所以你可以想象一下,假如NumPy堅持要將數據復制來復制去的話會產生何等的性能和內存問題。
4.Python關鍵字and和or在布爾型數組中無效。要使用&與|。

?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容