本章內(nèi)容:
- 數(shù)組的刪除
- 數(shù)組的去重
- 數(shù)組的拼接
- 數(shù)組分割
- 數(shù)組轉(zhuǎn)置
- Numpy計算函數(shù)
一耻涛、數(shù)組的刪除
delete函數(shù)
參數(shù)說明:
arr:輸入數(shù)組
obj:可以被切片,整數(shù)或者整數(shù)數(shù)組,表明要從數(shù)組刪除的子數(shù)組
axis:沿著它刪除給定子數(shù)組的軸谦疾,如果未提供纷闺,則輸入數(shù)組會被展開
a = np.arange(12).reshape(3,4)
print(a)
'''
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
'''
print(np.delete(a,5))
'''
[ 0 1 2 3 4 6 7 8 9 10 11]
'''
print(np.delete(a,1,axis=1)) # 刪除每一行的第二列
'''
[[ 0 2 3]
[ 4 6 7]
[ 8 10 11]]
'''
二、數(shù)組的去重
unique函數(shù)
參數(shù)說明:
arr:輸入數(shù)組,如果不是一維數(shù)組則會展開
return_index:如果為True凳谦,返回新列表元素在原列表中的下標(biāo)忆畅,并以列表形式存儲
return_inverse:如果為True,返回舊列表元素在新列表中的下標(biāo)尸执,并以列表形式存儲
return_counts:如果為True家凯,返回去重數(shù)組元素在原數(shù)組中出現(xiàn)的次數(shù)
a = np.array([5,2,6,2,7,5,6,8,2,9])
print(np.unique(a))
print(np.unique(a,return_index=True))
print(np.unique(a,return_inverse=True))
print(np.unique(a,return_counts=True))
'''
[2 5 6 7 8 9]
(array([2, 5, 6, 7, 8, 9]), array([1, 0, 2, 4, 7, 9], dtype=int64))
(array([2, 5, 6, 7, 8, 9]), array([1, 0, 2, 0, 3, 1, 2, 4, 0, 5], dtype=int64))
(array([2, 5, 6, 7, 8, 9]), array([3, 2, 2, 1, 1, 1], dtype=int64))
'''
三、數(shù)組的拼接
1如失、根據(jù)軸連接
concatenate函數(shù)
a = np.array([[1,2],[3,4]])
b = np.array([[5,6],[7,8]])
print(np.concatenate((a,b),axis=0))
print(np.concatenate((a,b),axis=1))
'''
[[1 2]
[3 4]
[5 6]
[7 8]]
[[1 2 5 6]
[3 4 7 8]]
'''
2绊诲、根據(jù)軸堆疊
區(qū)別:shape的維度會提升
a = np.array([[1,2],[3,4],[5,6]])
b = np.array([[5,6],[7,8],[9,10]])
print(np.stack((a,b),axis=0))
print(np.stack((a,b),axis=1))
print(np.stack((a,b),axis=0).shape)
print(np.stack((a,b),axis=1).shape)
'''
[[[ 1 2]
[ 3 4]
[ 5 6]]
[[ 5 6]
[ 7 8]
[ 9 10]]]
[[[ 1 2]
[ 5 6]]
[[ 3 4]
[ 7 8]]
[[ 5 6]
[ 9 10]]]
(2, 3, 2)
(3, 2, 2)
'''
3、矩陣拼接
np.vstack((a,b))與np.concatenate((a,b),axis=0)等價
np.hstack((a,b))與np.concatenate((a,b),axis=1)等價
四褪贵、數(shù)組的分割
split函數(shù)
參數(shù)說明
ary:被分割的數(shù)組
indices_or_sections:如果為一個數(shù)掂之,用該數(shù)平均切分,如果是切片竭鞍,為沿軸切分的索引位置
axis:軸,默認(rèn)為0板惑,沿軸0切分
arr = np.arange(8).reshape(4,2)
print(arr)
b = np.split(arr,2)
print(b)
c = np.split(arr,[0,1])
print(c)
'''
[[0 1]
[2 3]
[4 5]
[6 7]]
[array([[0, 1],
[2, 3]]), array([[4, 5],
[6, 7]])]
[array([], shape=(0, 2), dtype=int32), array([[0, 1]]), array([[2, 3],
[4, 5],
[6, 7]])]
'''
hsplit與vsplit函數(shù)
arr = np.arange(12).reshape(4,3)
print(arr)
# 沿軸1切割
b = np.vsplit(arr,2)
print(b)
# 沿軸0切割
c = np.hsplit(arr,[0,1])
print(c)
'''
[[ 0 1 2]
[ 3 4 5]
[ 6 7 8]
[ 9 10 11]]
[array([[0, 1, 2],
[3, 4, 5]]), array([[ 6, 7, 8],
[ 9, 10, 11]])]
[array([], shape=(4, 0), dtype=int32), array([[0],
[3],
[6],
[9]]), array([[ 1, 2],
[ 4, 5],
[ 7, 8],
[10, 11]])]
'''
五、二維數(shù)組轉(zhuǎn)置
transpose偎快、T冯乘、swapaxes
arr = np.arange(12).reshape(4,3)
print(arr)
print(np.transpose(arr))
print(arr.T)
print(arr.swapaxes(1,0))
'''
[[ 0 1 2]
[ 3 4 5]
[ 6 7 8]
[ 9 10 11]]
[[ 0 3 6 9]
[ 1 4 7 10]
[ 2 5 8 11]]
[[ 0 3 6 9]
[ 1 4 7 10]
[ 2 5 8 11]]
[[ 0 3 6 9]
[ 1 4 7 10]
[ 2 5 8 11]]
'''
六、Numpy計算函數(shù)
基本的10個函數(shù): 最大值晒夹、最小值裆馒、極值替代、平均值丐怯、累加和喷好、argmin、標(biāo)準(zhǔn)差读跷、極差
score = np.array([[80,88],[82,81],[75,81]])
result = np.max(score)
'''
88
'''
result = np.max(score,axis = 0)
'''
array([82, 88])
'''
result = np.min(score)
'''
75
'''
result = np.min(score,axis = 0)
'''
array([75, 81])
'''
result = np.minimum([-2,-1,0,1,2],0)
'''
array([-2, -1, 0, 0, 0])
'''
result = np.maximum([-2,-1,0,1,2],0)
'''
array([0, 0, 0, 1, 2])
'''
result = np.maximum([-2,-1,0,1,2],[1,2,3,4,5])
'''
array([1, 2, 3, 4, 5])
'''
result = np.mean(score)
'''
81.16666666666667
'''
result = np.mean(score,axis = 0)
'''
array([79., 83.33333333])
'''
result = score.cumsum(0)
'''
array([[ 80, 88],
[162, 169],
[237, 250]], dtype=int32)
'''
result = score.cumsum(1)
'''
array([[ 80, 168],
[ 82, 163],
[ 75, 156]], dtype=int32)
'''
result = np.argmin(score,axis = 0)
'''
array([2, 1], dtype=int64)
'''
result = np.std(score,axis = 0)
'''
array([2.94392029, 3.29983165])
'''
result = np.ptp(score,axis = None)
'''
13
'''
更多拓展:
numpy. sqrt(array) 平方根函數(shù)
numpy. exp(array) e^array[i]的數(shù)組
numpy. abs/fabs(array) 計算絕對值
numpy. square(array) 計算各元素的平方等于array**2
numpy. log/1og10/1og2(array) 計算各元素的各種對數(shù)
numpy. sign(array) 計算各元素正負(fù)號
numpy. isnan(array) 計算各元素是否為NaN
numpy. isinf (array) 計算各元素是否為NaN
numpy. cos/cosh/s in/s inh/tan/tanh(array)三角函數(shù)
numpy. modf(array) 將array中值得整數(shù)和小數(shù)分離,作兩個數(shù)組返回
numpy. ceil(array) 向上取整梗搅,也就是取比這個數(shù)大的整數(shù)
numpy. floor(array) 向下取整,也就足取比這個數(shù)小的整數(shù)
numpy. rint(array) 四舍五入
numpy. trunc(array) 向0取整
numpy. cos(array) 正弦值
numpy. sin(array) 余弦值
numpy. tan(array) 正切值
numpy. add(array1 ,array2) 元素級加法
numpy. subtract(array1,array2) 元素級減法
numpy. multiply(array1 , array2) 元素級乘法
numpy. divide(array1 ,array2) 元索級除法array1. /array2
numpy. power(array1 , array2) 元素級指數(shù)array1. array2
numpy. maximum/mini mum(array1 ,aray2) 元素級最大值
numpy. fmax/fmin(array1 ,array2) 元素級最大值,忽略NaN
numpy. mod(array1, array2) 元素級求模
numpy. copysign(array1 ,array2) 將第二個數(shù)組中值得符號復(fù)制給第一個數(shù)組中值
numpy. greater/greater. equa1/less/less_ equal/equal/not. equal (array1 , array2)元素級比較運算,產(chǎn)生布爾數(shù)組
numpy. logical end/1ogical_or/logic_xor(array1 , array2)元素級的真值邏輯運算
七、數(shù)組中的nan與inf
np.nan:在以numpy為基礎(chǔ)開發(fā)的pandas中比較常見,表示缺失的數(shù)值无切。任何數(shù)據(jù)與nan進(jìn)行計算結(jié)果都是nan
np.inf:表示無窮大荡短,有inf與-inf。
注意:np.nan!=np.nan的值為True, 根據(jù)這個條件可以判斷nan的個數(shù):
np.count_nonzero(t != t)
將nan替換為0
t[np.isnan(t)] = 0