NumPy模块(学习笔记5-数组处理)

#数组的常见处理操作包括在数组中添加或者删除元素
#处理数组中的缺失值和重复值
#对数组进行拼接和拆分等
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]])]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值