Numpy學習筆記 1

打雜小弟3發表於2020-11-23

1 常量

1.1 numpy.nan

import numpy as np
print(np.nan == np.nan)  
print(np.nan != np.nan)

在這裡插入圖片描述(1)np.nan不是一個空物件,用i is None 判斷是False 用np.isnan()判斷是True

(2)對某個值判斷是否為控制時,只能用np.isnan(i)函式,絕不可能用 i==np.nan()!!!

(3)因為空值不能用判斷相等的"=="正確識別
np.nan非空物件,其型別為基本資料型別float
在這裡插入圖片描述

1.2 numpy.inf

numpy中的inf表示一個無限大的正數
在這裡插入圖片描述

1.3 numpy.pi

numpy.pi 表示圓周率
在這裡插入圖片描述

1.4 numpy.e

numpy.e 表示自然常數
在這裡插入圖片描述

2 資料型別

2.1常見資料型別

Python 原生的資料型別相對較少, bool、int、float、str等。這在不需要關心資料在計算機中表示的所有方式的應用中是方便的。然而,對於科學計算,通常需要更多的控制。為了加以區分 numpy 在這些型別名稱末尾都加了“_”。

下表列舉了常用 numpy 基本型別

在這裡插入圖片描述

2.2 建立資料型別

numpy 的數值型別實際上是 dtype 物件的例項

在這裡插入圖片描述每個內建型別都有一個唯一定義它的字元程式碼,如下:

在這裡插入圖片描述
itemsize輸出array元素的位元組數
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述在這裡插入圖片描述

2.3資料型別資訊

Python 的浮點數通常是64位浮點數,幾乎等同於 np.float64。

NumPy和Python整數型別的行為在整數溢位方面存在顯著差異,與 NumPy 不同,Python 的int 是靈活的。這意味著Python整數可以擴充套件以容納任何整數並且不會溢位。
整數型別的機器限制
在這裡插入圖片描述
在這裡插入圖片描述
浮點型別的機器限制。
class finfo(object):
def _init(self, dtype):

在這裡插入圖片描述

3 時間日期和時間增量

3.1 datetime64 基礎

在 numpy 中,我們很方便的將字串轉換成時間日期型別 datetime64(datetime 已被 python 包含的日期時間庫所佔用)。

datatime64是帶單位的日期時間型別,其單位如下:
在這裡插入圖片描述
從字串建立 datetime64 型別時,預設情況下,numpy 會根據字串自動選擇對應的單位
在這裡插入圖片描述
從字串建立 datetime64 型別時,可以強制指定使用的單位。
在這裡插入圖片描述
由上例可以看出,2019-03 和 2019-03-01 所表示的其實是同一個時間。 事實上,如果兩個 datetime64 物件具有不同的單位,它們可能仍然代表相同的時刻。並且從較大的單位(如月份)轉換為較小的單位(如天數)是安全的。

從字串建立 datetime64 陣列時,如果單位不統一,則一律轉化成其中最小的單位。

在這裡插入圖片描述
使用arange()建立 datetime64 陣列,用於生成日期範圍

在這裡插入圖片描述

3.2 datetime64 和 timedelta64 運算

timedelta64 表示兩個 datetime64 之間的差。timedelta64 也是帶單位的,並且和相減運算中的兩個 datetime64 中的較小的單位保持一致。

在這裡插入圖片描述
生成 timedelta64時,要注意年(‘Y’)和月(‘M’)這兩個單位無法和其它單位進行運算(一年有幾天?一個月有幾個小時?這些都是不確定的)。

在這裡插入圖片描述

timedelta64 的運算。

在這裡插入圖片描述
numpy.datetime64 與 datetime.datetime 相互轉換

在這裡插入圖片描述
datetime64 的應用

為了允許在只有一週中某些日子有效的上下文中使用日期時間,NumPy包含一組“busday”(工作日)功能。

numpy.busday_offset(dates, offsets, roll=‘raise’, weekmask=‘1111100’, holidays=None, busdaycal=None, out=None) First adjusts the date to fall on a valid day according to the roll rule, then applies offsets to the given dates counted in valid days.
引數roll:{‘raise’, ‘nat’, ‘forward’, ‘following’, ‘backward’, ‘preceding’, ‘modifiedfollowing’, ‘modifiedpreceding’}

‘raise’ means to raise an exception for an invalid day.
‘nat’ means to return a NaT (not-a-time) for an invalid day.
‘forward’ and ‘following’ mean to take the first valid day later in time.
‘backward’ and ‘preceding’ mean to take the first valid day earlier in time.

將指定的偏移量應用於工作日,單位天(‘D’)。計算下一個工作日,如果當前日期為非工作日,預設報錯。可以指定 forward 或 backward 規則來避免報錯。(一個是向前取第一個有效的工作日,一個是向後取第一個有效的工作日)

在這裡插入圖片描述
可以指定偏移量為 0 來獲取當前日期向前或向後最近的工作日,當然,如果當前日期本身就是工作日
要注意!!一開始想不懂以為錯了,後來明白forward向前就是向未來看,backward是向過去看

返回指定日期是否是工作日。
在這裡插入圖片描述
統計一個 datetime64[D] 陣列中的工作日天數。
在這裡插入圖片描述
返回兩個日期之間的工作日數量。
在這裡插入圖片描述

相關文章