1. 程式人生 > >numpy基礎(一)

numpy基礎(一)

這裡主要介紹numpy包。

ndarray(陣列)

N維陣列物件ndarray,是numpy中最重要的一個物件。

建立ndarray

array函式

import numpy as nu

data = np.array([[1, 2], [3, 4]])
type(data)
#<class 'numpy.ndarray'>
data.dtype
#dtype('int64')
data.shape
#(2, 2)

#顯式說明資料型別
data_1 = np.array([[1, 2], [3, 4]], dtype=np.float64)
data_1.dtype
#dtype('float64')

除非顯式的說明(dtype=),np.array會換成那個是為新建的這個陣列推斷出一個較為合適的資料型別。資料型別儲存在一個特殊的dtype物件中。
array函式建立一個nparray物件,此物件屬性有

屬性 說明
dtype 資料型別
shape 形狀/維數
trace()
dot(ndarray) 矩陣乘法
transpose() 轉置

陣列建立函式

函式 說明
array()
arange() 類似range(),但返回的是一個ndarray而不是一個列表。
ones()、ones_like() 建立全為1的陣列
zeros(),zeros_like() 建立全為0的陣列
empty(),empty_like() 建立新陣列,只分配記憶體空間,不填充任何值
eye(),identity() 建立N維單位陣

陣列索引和切片

陣列切片是原陣列的一個試圖,對此切片的修改會反映到原陣列上

import numpy as np

x = np.arange(10)
x
#array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
x[0:4] = 0
x
#array([0, 0, 0, 0, 4, 5, 6, 7, 8, 9])

numpy函式

函式 說明
abs(x),fabs(x) |x|, 對於非複數值,fabs()更快
sqrt(x) x
square(x) x2
exp(x) ex
log(), log10(), log2(), log1p() ln(x), lgx, log2(x), ln(x+1)
sign(x) x的符號, 1, 0, -1
ceil(x) 大於該值的最小整數
floor(x) 小於該值的最大整數
round(x), rint(x) 四捨五入取整,保留dtype
modf(x) 小數部分和整數部分分別返回
isnan(x) 是否為NaN
isfinite(x), isinf(x) 有窮,無窮
sin(x), cos(x), tan(x), sinh(x), cosh(x), tanh(x) 三角
arcsin(x)… 反三角
logical_not(x) 計算not x的真值
sum()
mean()
std()
var()
min()
max()
argmax() 最大元素索引
argmin()
sumsum() 累計和
cumprod() 累計積
sort() 排序

注意:頂級方法np.sort()返回排序後的副本,x.sort()就地排序

常量 說明
pi π
nan NaN
e e

注意:常量均為數值

函式 說明
add(x, y) x+y
subtract(x, y) xy
multiply(x, y) xy
divide(x, y), floor_divide(x, y) x/y,丟棄小數部分
power(x, y) xy
maximum(x), fmax(x) 計算最大值, 忽略NaN
minimum(x), fmin(x) 計算最小值, 忽略NaN
mod(x, y) x/y取模,餘數
copysign(x, y) 將y的值的符號複製給x的值
greater(x, y), greater_equal(x, y) x>y, x>=y
less(x, y), less_equal(x, y)
equal(x, y), not_equal()
logical_and(x, y) 元素級真值邏輯運算
logical_or(x, y)
logical_xor(x, y)

集合運算

函式 說明
unique(x) x中唯一元素
intersect1d(x, y) x,y公共元素
union(x, y) x, y並集
in1d(x, y) 返回‘x的元素是否包含於y’的布林型陣列
setdiff1d(x, y) 集合的差, x-y
setxor1d(x, y) 亦或,存在於一個數組中,但不同時存在於兩個陣列中