numpy 學習筆記(1)

2021-07-26 16:51:57 字數 2879 閱讀 6083

一 陣列性質

1.下標:陣列下標從0開始

2.資料型別:資料型別為numpy自定義資料型別,如果定義陣列時沒有指定資料型別,程式會自行轉換,資料型別請參考資料型別

3.秩(rank):陣列的維數

4.軸(axes):相當於陣列的第幾維,秩說的是軸的數量

二陣列物件的屬性

ndim:陣列的秩,陣列的維數

a = array([[1,2,3],[1,2,3]])

print a.ndim

輸出為2

shape:返回乙個元組,表示陣列的結構和python中的shape()函式類似

a = array([[1,2,3],[1,2,3]])

b = [[1,2,3],[1,2,3]]

print shape(b)

print a.shape

返回的都是  (2, 3)

size:陣列元素的總個數,相當於shape返回的元組各元素的乘積

a = array([[1,2,3],[1,2,3]])

b = a.shape

print a.size

print b[0]*b[1]

輸出為6

dtype:陣列資料型別,當建立陣列時可以指定資料型別為python基本資料型別或numpy自定義資料型別,當為基本資料型別時,程式自動轉換為對應的自定義資料型別

a = array([[1,2,3],[1,2,3]], dtype = int)

print a.dtype

輸出為int32, 型別自動轉化為對應的自定義型別

itemsize:陣列中每個元素所占用的位元組大小,當元素型別為int32時,占用4個位元組,每個位元組8位

a = array([[1,2,3],[1,2,3]], dtype = int32)

print a.itemsize

輸出為4

三 建立陣列

1,通過列表或元組或兩者的結合來建立陣列,建立陣列時可以指定陣列元素的型別,陣列同一維元素個數必須相同,否則會報錯

a = array(([1,2,3],[1,2,3]), dtype = int32) 正確

b = array(([1,2,3],[1,2]), dtype = int32) 報錯,第二維元素個數不同

2.通過numpy函式來建立陣列

arange 函式類似python中的range函式,指定初值,終值和步長建立一維陣列,其中不包括終值。建立時可以指定資料型別

>>> a = arange(1,10,1,dtype=int32)

>>> a

array([1, 2, 3, 4, 5, 6, 7, 8, 9])

此外還有linsapce  和  logspace函式

python中的字串實際是位元組序列,每個字元占用乙個位元組,如果從字串s建立乙個8bit的整數陣列的話,所得到的陣列正好就是字串中每個字元的ascii編碼:

s = 'abcd'

a = fromstring(s, dtype=int8)

b = fromstring(s, dtype=int16)

print a

print b

輸出為[ 97  98  99 100]   [25185 25699]  其中 98*256+97 = 25185

此外還有frombuffer  和 fromfile fromfunction

陣列的複製包括完全不複製,淺複製和深複製

1.完全不複製

就是簡單的複製,同乙個儲存空間有多個名字,改變乙個,其他也改變

>>> a=array([1,2,3])

>>> b=a

>>> b[0]=2

>>> b

array([2, 2, 3])

>>> b is a

true

2.淺複製

淺複製就是不同的資料物件分享同乙個儲存空間中的資料,切片就是一種淺複製,如果切片改變,原陣列也會改變,應為他們用的同一記憶體中的資料

>>> c=a[0:2]

>>> c[0]=4

>>> a

array([4, 2, 3])

>>> c is a

false

>>> c.base is a

true

>>> a = array([[1,2,3],(4,5,6)])

>>> a.shape

(2, 3)

>>> b=a.view()

>>> b.shape=(3,2)

>>> a

array([[1, 2, 3],

[4, 5, 6]])

b是a的淺複製,改變b的shape,a的不改變,他們只是用的相同儲存空間的資料,而不是同乙個變數

3.深複製

就是原資料中的乙個拷貝,儲存在不同的空間,乙個改變不影響另乙個

>>> a = array([[1,2,3],(4,5,6)])

>>> b = a.copy()

>>> b[0][0]=2

>>> a

array([[1, 2, 3],

[4, 5, 6]])

>>> b

array([[2, 2, 3],

[4, 5, 6]])

>>> b.base is a

false

Numpy學習筆記(1)

numpy的部分功能 1.用於資料整理和清理 子集構造和過濾 轉換等快速的向量化陣列運算 2.常用的陣列演算法,如排序 唯一化 集合運算等 3.高效的描述統計和資料聚合 摘要運算 4.用於異構資料集的合併 連線運算的資料對齊和關係型資料運算 5.將條件邏輯表述為陣列表示式 6.資料的分組運算 聚合 ...

NumPy學習筆記(1) NumPy庫簡介

這兩年python特別火,在一些it 上轉一圈各處都能看到關於python的技術類文章,引用官方的說法 python就是 一種解釋型的 物件導向的 帶有動態語義的高階程式語言 等方面。我是因為搞深度學習開始接觸python的,之前學的c 在遇見python後簡直開啟了新世界的大門,碼 的幸福感簡直爆...

Numpy學習筆記1 genfromtxt

genfromtxt函式 genfromtxt函式建立陣列 資料 genfromtxt主要執行兩個迴圈運算。第乙個迴圈將檔案的每一行轉換成字串序列。第二個迴圈將每個字串序列轉換為相應的資料型別。genfromtxt能夠考慮缺失的資料,但其他更快和更簡單的函式像loadtxt不能考慮缺失值。使用前需匯...