萊蕪 做網(wǎng)站 公司百度權(quán)重提升
NumPy是Python中科學(xué)計(jì)算的基礎(chǔ)包。它是一個(gè)Python庫,提供多維數(shù)組對(duì)象,各種派生對(duì)象(如掩碼數(shù)組和矩陣),以及用于數(shù)組快速操作的各種API,有包括數(shù)學(xué)、邏輯、形狀操作、排序、選擇、輸入輸出、離散傅立葉變換、基本線性代數(shù),基本統(tǒng)計(jì)運(yùn)算和隨機(jī)模擬等等。
首先引入numpy
庫
import numpy as np
ndarray
NumPy 中定義的最重要的對(duì)象是稱為 ndarray
的 N 維數(shù)組類型。 它描述相同類型的元素集合。 可以使用基于零的索引訪問集合中的項(xiàng)目。
ndarray
中的每個(gè)元素在內(nèi)存中使用相同大小的塊。 ndarray
中的每個(gè)元素是數(shù)據(jù)類型對(duì)象的對(duì)象(稱為 dtype
)。
從ndarray
對(duì)象提取的任何元素(通過切片)由一個(gè)數(shù)組標(biāo)量類型的 Python 對(duì)象表示。 下圖顯示了ndarray
,數(shù)據(jù)類型對(duì)象(dtype
)和數(shù)組標(biāo)量類型之間的關(guān)系。
ndarray
常用屬性:
屬性 | 含義 |
---|---|
ndim | 維度(軸)的個(gè)數(shù) |
shape | 維度,軸,形狀大小 |
size | 元素的總個(gè)數(shù) |
dtype | 元素的數(shù)據(jù)類型 |
itemsize | 元素的字節(jié)大小 |
num = np.random.randn(2,3)
print(num)
print("數(shù)據(jù)類型:", type(num))
print("維度個(gè)數(shù):", num.ndim) # 行數(shù)
print("維度大小(n,m):", num.shape)
print("元素總個(gè)數(shù):", num.size)
print("元素的數(shù)據(jù)類型:", num.dtype)
print("元素的字節(jié)大小:", num.itemsize)
array
函數(shù)
array
具有以下功能:
- 將任意的序列對(duì)象轉(zhuǎn)換為數(shù)組
- 支持將特定的嵌套序列轉(zhuǎn)換為高維數(shù)組
- 自動(dòng)推斷生成的數(shù)據(jù)類型
# 將列表轉(zhuǎn)為數(shù)組類型
num1 = np.array([1,2,34])
num2 = np.array([ [1,2, 34],[34, 2, 1]])
# 設(shè)置元素類型
num3 = np.array([[1,2,34],[34,2,1]
], dtype='float32')print(num1)
print(num2)
print(num3)
zeros
函數(shù)
用法與array
函數(shù)相似。創(chuàng)建全0數(shù)組,默認(rèn)元素類型是浮點(diǎn)數(shù)類型;使用元組指定創(chuàng)建數(shù)組的形狀。
# 創(chuàng)建 3行4列的全0矩陣
num = np.zeros((3,4))
print(num)
ones
函數(shù)
與zeros
函數(shù)一樣,只不過是創(chuàng)建全0數(shù)組,默認(rèn)元素類型是浮點(diǎn)數(shù)。
# 創(chuàng)建 3行4列的全1矩陣
num = np.ones((3,4))
print(num)
empty
函數(shù)
創(chuàng)建一個(gè)未初始化的數(shù)組。元素為內(nèi)存中不確定值。
# 創(chuàng)建 3行4列的全1矩陣
num = np.empty((3,4))
print(num)
arange
函數(shù)
arange()類似于python的內(nèi)置函數(shù)range(),通過指定開始值、終值和步長來創(chuàng)建表示等差數(shù)列的一維數(shù)組,返回給定間隔內(nèi)的均勻間隔值,注意得到的結(jié)果數(shù)組不包含終值。
arange()函數(shù)有四個(gè)個(gè)參數(shù),分別是start(開始值)、stop(終值)、step(步長)和dtype(數(shù)組類型)。
開始值可選,默認(rèn)值是0,包含在數(shù)組中。
終止值必選,不包含在數(shù)組中。
步長可選,默認(rèn)是1。
# 長度為0到9
num1 = np.arange(10)
print(num1)# 長度為0到9的偶數(shù)
num2 = np.arange(0, 10,2)
print(num2)# 長度為0到9的奇數(shù)
num3 = np.arange(1,10,2)
print(num3)
其他函數(shù)
asarray
函數(shù):類似array函數(shù),但若轉(zhuǎn)換對(duì)象為數(shù)組時(shí),僅創(chuàng) 建一個(gè)引用,而array為深拷貝。ones_like
函數(shù):創(chuàng)建一個(gè)與指定數(shù)組相同形狀的全1數(shù)組。zeros_like
函數(shù):創(chuàng)建一個(gè)與指定數(shù)組相同形狀的全0數(shù)組。empty_like
函數(shù):創(chuàng)建一個(gè)與指定數(shù)組相同形狀的未初始化數(shù)組。
數(shù)據(jù)類型
Numpy 的類型 | C 的類型 | 描述 |
---|---|---|
np.int8 | int8_t | 字節(jié)(-128到127) |
np.int16 | int16_t | 整數(shù)(-32768至32767) |
np.int32 | int32_t | 整數(shù)(-2147483648至2147483647) |
np.int64 | int64_t | 整數(shù)(-9223372036854775808至9223372036854775807) |
np.uint8 | uint8_t | 無符號(hào)整數(shù)(0到255) |
np.uint16 | uint16_t | 無符號(hào)整數(shù)(0到65535) |
np.uint32 | uint32_t | 無符號(hào)整數(shù)(0到4294967295) |
np.uint64 | uint64_t | 無符號(hào)整數(shù)(0到18446744073709551615) |
np.intp | intptr_t | 用于索引的整數(shù),通常與索引相同 ssize_t |
np.uintp | uintptr_t | 整數(shù)大到足以容納指針 |
np.float32 | float | |
np.float64 / np.float_ | double | 請(qǐng)注意,這與內(nèi)置python float的精度相匹配。 |
np.complex64 | float complex | 復(fù)數(shù),由兩個(gè)32位浮點(diǎn)數(shù)(實(shí)數(shù)和虛數(shù)組件)表示 |
np.complex128 / np.complex_ | double complex | 請(qǐng)注意,這與內(nèi)置python 復(fù)合體的精度相匹配。 |
還有許多別名等,詳情看:數(shù)據(jù)類型 | NumPy
數(shù)據(jù)類型的表示
既可以用類型本身,如np.int32
,也可以用類型名稱字符串,例如int32
,還可以用類型代碼字符串,例如i4
。
類型轉(zhuǎn)換
使用astype
方法進(jìn)行數(shù)組之間的類型轉(zhuǎn)換。
默認(rèn)生成一個(gè)新數(shù)組。
num = np.arange(1,10,1.5)
print(num)num1 = num.astype(int)
print(num1)
數(shù)組運(yùn)算
-
相同形狀的數(shù)組之間的運(yùn)算逐元素執(zhí)行。
-
數(shù)組與標(biāo)量間的運(yùn)算,將計(jì)算參數(shù)傳遞給 數(shù)組的每一個(gè)元素。
num1 = np.array([1, 2, 3])
num2 = np.array([3, 4, 5])# 相同形狀的數(shù)組之間的運(yùn)算逐元素執(zhí)行。
print(num1 + num2)# 數(shù)組與標(biāo)量間的運(yùn)算,將計(jì)算參數(shù)傳遞給 數(shù)組的每一個(gè)元素。
print(num1 + 100)
Python之Numpy詳細(xì)教程_python numpy-CSDN博客
NumPy 介紹 | NumPy