numpy.array 操作使用簡單總結
import numpy as np
numpy.array 常用變量及參數
- dtype變量,用來存放數據類型, 創(chuàng)建數組時可以同時指定。
- shape變量, 存放數組的大小, 這人值是可變的, 只要確保無素個數不變的情況下可以任意修改。(-1為自動適配, 保證個數不變)
- reshape方法,創(chuàng)建一個改變了形狀的數組,與原數組是內存共享的,即都指向同一塊內存。
創(chuàng)建數組的方法
np.array([[1, 2, 3, 4],[4, 5, 6, 7], [7, 8, 9, 10]], dtype=np.float) np.arange(0,1,0.1) #0到1之間步長為0.1的數組, 數組中不包含1 np.linspace(0, 1, 5) # 開始:0, 結束1, 元素個數 5。 array([ 0. , 0.25, 0.5 , 0.75, 1. ]) np.logspace(0, 1, 5) # 開始:0, 結束1, 元素個數 5. array([ 10**0. , 10**0.25, 10**0.5 , 10**0.75, 10**1. ]) # 結果是 array([ 1. , 1.77827941, 3.16227766, 5.62341325, 10. ]) s = 'abcdefg' np.fromstring(s, dtype=np.int8) def func2(i, j): return (i+1) * (j+1) np.fromfunction(func2, (9,9)) np.ones((2, 2)) np.zero((2, 2)) np.eye(2) #創(chuàng)建二維數組: np.arange(0, 60, 10).reshape(-1, 1) + np.arange(0, 6)
數據讀取
通過下標范圍獲取數據: 與python list對象操作一致。 不同點是這方法獲取的數組與原數組是內存共享的。
通過整數序列獲取新數組:例 x[[3,2,3,2] ], 產生新數組, 內存不共享
使用布爾數組獲取數據:例: x[np.array([True, False, True, False, False])] 或 x[x>0.5], 返回True對應的數字。
代碼示例:
>>> x = np.arange(10) >>> y = x[::-1] >>> x array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) >>> y array([9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) >>> y[0] = 100 >>> x array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 100]) >>> y array([100, 8, 7, 6, 5, 4, 3, 2, 1, 0]) >>> x[0] = 99 >>> x array([ 99, 1, 2, 3, 4, 5, 6, 7, 8, 100]) >>> y array([100, 8, 7, 6, 5, 4, 3, 2, 1, 99]) >>> y = x[1:6] >>> y array([1, 2, 3, 4, 5]) >>> y[2] = 33 >>> y array([ 1, 2, 33, 4, 5]) >>> x array([ 99, 1, 2, 33, 4, 5, 6, 7, 8, 100]) >>> x[[3,2,3,2]] array([33, 2, 33, 2]) >>> z = x[[3,2,3,2]] >>> z array([33, 2, 33, 2]) >>> z[3] = 4 >>> z array([33, 2, 33, 4]) >>> x array([ 99, 1, 2, 33, 4, 5, 6, 7, 8, 100]) >>> x[x>10] array([ 99, 33, 100]) >>>
數組擴展
np.vstack((a, b)): 增加行數, 把b數據追加到a的下面, 上下連接。
np.hstack((a, b)): 增加列數,把a, b左右連接。
>>> a = np.ones((3,3)) >>> b = np.eye(3) >>> a array([[ 1., 1., 1.], [ 1., 1., 1.], [ 1., 1., 1.]]) >>> b array([[ 1., 0., 0.], [ 0., 1., 0.], [ 0., 0., 1.]]) >>> b *= 2 >>> b array([[ 2., 0., 0.], [ 0., 2., 0.], [ 0., 0., 2.]]) >>> np.vstack((a, b)) array([[ 1., 1., 1.], [ 1., 1., 1.], [ 1., 1., 1.], [ 2., 0., 0.], [ 0., 2., 0.], [ 0., 0., 2.]]) >>> >>> np.hstack((a, b)) array([[ 1., 1., 1., 2., 0., 0.], [ 1., 1., 1., 0., 2., 0.], [ 1., 1., 1., 0., 0., 2.]])
ufunc運算
ufunc是universal function的縮寫,它是一種能對數組的每個元素進行操作的函數。NumPy內置的許多ufunc函數都是在C語言級別實現(xiàn)的,因此它們的計算速度非常快。
np.sin(x, x) np.add(a, b) ~ a+b np.subtract(a, b) ~ a-b np.multiply(a, b) ~ a*b divide ~ a/b floor divide ~ a//b negative ~ -a power ~ a**b remainder ~ a % b
注意:復雜運算時,中間步聚會有臨時變量,這會拖慢運算速度。
如:
x = a*b + c
等價于
t = a*b x = t + c del t
所以可手動優(yōu)化
x = a * b x += c
二維數組轉一維
>>> a array([[ 1, 2, 3, 4], [ 4, 5, 6, 7], [ 7, 8, 9, 10]]) >>> a.ravel() array([ 1, 2, 3, 4, 4, 5, 6, 7, 7, 8, 9, 10])
reshape函數可重新定義大小。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
pandas對dataFrame中某一個列的數據進行處理的方法
這篇文章主要介紹了pandas對dataFrame中某一個列的數據進行處理的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-07-07python根據用戶需求輸入想爬取的內容及頁數爬取圖片方法詳解
這篇文章主要介紹了python根據用戶需求輸入想爬取的內容及頁數爬取圖片方法詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-08-08python使用MQTT給硬件傳輸圖片的實現(xiàn)方法
最近因需要用python寫一個微服務來用MQTT給硬件傳輸圖片,其中python用的是flask框架。這篇文章主要介紹了python使用MQTT給硬件傳輸圖片,需要的朋友可以參考下2019-05-05python GUI編程(Tkinter) 創(chuàng)建子窗口及在窗口上用圖片繪圖實例
這篇文章主要介紹了python GUI編程(Tkinter) 創(chuàng)建子窗口及在窗口上用圖片繪圖實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-03-03jupyter notebook運行代碼沒反應且in[ ]沒有*
本文主要介紹了jupyter notebook運行代碼沒反應且in[ ]沒有*,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-03-03