#数组的常见处理操作包括在数组中添加或者删除元素
#处理数组中的缺失值和重复值
#对数组进行拼接和拆分等
import numpy as np
#添加数组元素append()函数
a = np.array([[1,2,3],[4,5,6]])
b = np.append(a,[[7,8,9]])
print(a) #[[1 2 3]
# [4 5 6]]
print(b) #[1 2 3 4 5 6 7 8 9] 可以看出不添加参数的时候会变为一维
c = np.append(a,[[7,8,9]],axis=0) #不改变维数需要设置参数axis=0,表示添加在行方向上
print(c) #[[1 2 3]
# [4 5 6]
# [7 8 9]]
d = np.append(a,[[7],[9]],axis=1) #axis=1表示添加在列方向上,注意列的添加格式
# d = np.append(a,[[7,8],[9,10]],axis=1)
print(d)
#插入数组元素insert()函数,用于在指定位置添加元素
arr = np.array([[1,2],[3,4],[5,6]])
e = np.insert(arr,1,[7,8])
print(e) #[1 7 8 2 3 4 5 6]
f = np.insert(arr,3,[7,8],axis=0)
print(f)
g = np.insert(arr,2,[7,8,9],axis=1)
print(g)
#删除数组元素delete()函数
arr_1 = np.array([[1,2,3],[4,5,6],[7,8,9]])
h = np.delete(arr_1,2)
print(h) #不设置参数会先展开为一维数组然后根据索引删除元素[1 2 4 5 6 7 8 9]
i = np.delete(arr_1,2,axis=0) #删除第三行
print(i)
j = np.delete(arr_1,2,axis=1) #删除第三列
print(j)
#处理数组的缺失值
#第一步找出缺失值的位置;第二部用指定的值对缺失值进行填充
#使用isnan()函数标记数组中缺失值的位置
arr_2 = np.array([[1,2,3],[4,5,6],[np.nan,8,9]])
# print(arr_2)
print(np.isnan(arr_2)) #在确实的位置为True
# [[False False False]
# [False False False]
# [ True False False]]
arr_2[np.isnan(arr_2)]=0
print(arr_2)
# [[1. 2. 3.]
# [4. 5. 6.]
# [0. 8. 9.]]
#处理数组的重复值unique()函数
arr_3 = np.array([1,2,2,2,3,4,5,6,6])
k = np.unique(arr_3) #直接去重处理
print(k) #[1 2 3 4 5 6]
l = np.unique(arr_3,return_counts=True) #返回每个元素重复次数
print(l) #(array([1, 2, 3, 4, 5, 6]), array([1, 3, 1, 1, 1, 2], dtype=int64))
#拼接数组
#数组的拼接指的是将多个数组合并为一个数组,使用concatenate()、hstack()、vstack()函数
#待合并的数组维度必须相同
#concatenate()函数
arr_4 = np.array([[1,2,3],[4,5,6]])
arr_5 = np.array([[7,8,9],[10,11,12]])
m = np.concatenate((arr_4,arr_5),axis=0)
n = np.concatenate((arr_4,arr_5),axis=1)
print(m)
print(n)
#hstack()、vstack()函数
o = np.hstack((arr_4,arr_5)) #行方向拼接
print(o)
p = np.vstack((arr_4,arr_5)) #列方向拼接
print(p)
#拆分数组,split()、hsplit()、vsplit()函数
arr_6 = np.array([1,2,3,4,5,6,7,8,9,10,11,12])
q = np.split(arr_6,2) #将一维数组拆分为2个相等的一维数组
r = np.split(arr_6,4) #将一维数组拆分为4个相等的一维数组
print(q) #[array([1, 2, 3, 4, 5, 6]), array([ 7, 8, 9, 10, 11, 12])]
print(r) #[array([1, 2, 3]), array([4, 5, 6]), array([7, 8, 9]), array([10, 11, 12])]
#split按照指定索引位置拆分数组
s = np.split(arr_6,[2,6]) #表示在索引位置2,6处拆分
print(s) #[array([1, 2]), array([3, 4, 5, 6]), array([ 7, 8, 9, 10, 11, 12])]
#hsplit()、vsplit()函数
#hsplit()能将数组横向拆分为多个数组
#vsplit()能将数组纵向拆分为多个数组
arr_7 = np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16]])
t = np.hsplit(arr_7,2)
u = np.vsplit(arr_7,2)
print(t)
#[array([[ 1, 2],
# [ 5, 6],
# [ 9, 10],
# [13, 14]]), array([[ 3, 4],
# [ 7, 8],
# [11, 12],
# [15, 16]])]
print(u)
#[array([[1, 2, 3, 4],
# [5, 6, 7, 8]]), array([[ 9, 10, 11, 12],
# [13, 14, 15, 16]])]
NumPy模块(学习笔记5-数组处理)
最新推荐文章于 2022-10-01 12:48:20 发布