import numpy as np
目录
#创建一维数组
list1=[1,2,3] #传入list
arr1=np.array(list1) #转换为数组
print(arr1,type(arr1))
arr2=np.arange(0,10,2) #自动生成数组,开始值,结束值,步长
print(arr2)
arr3=np.linspace(2,3,num=5) #在两个值中间取均匀的n个值
print(arr3)
#创建二维数组
list2=[[1,2],[3,4],[5,6]]
arr1=np.array(list2)
print(arr1,type(arr1))
list3=[(1,2),(3,4),(5,6)]
arr2=np.array(list3)
print(arr2,type(arr2))
arr3=np.array([[1.8,2,3],[4,5,6]],dtype=float) #dtype 元素的类型
print(arr3,type(arr3))
arr4=np.array([[1,2,3],[4,5]])
print(arr4)
a=np.zeros((3,4)) #全0
print(a)
b=np.ones((4,5)) #全1
print(b)
print(np.empty((3,4)))
np.empty([2,6]) #创建空数组
基本属性
arr=np.array([[1,2,3],[4,5,6]])
查看维度的属性
查看几行几列
查看数据类型
查看个数
print(arr.ndim) #查看维度的属性
print(arr.shape) #查看几行几列
print(arr.dtype) #里面的数据类型
print(arr.size) #个数
数据类型转换
arr1=np.arange(10,dtype=float)
arr2=arr1.astype(np.int32)
数组运算
arr=np.array([[1,2,3],[4,5,6]])
print(arr+arr)
print(arr-arr)
print(arr*arr)
print(arr/arr)
print(/arr) #广播
切片和索引
ar=np.arange(1,21)
print(ar)
print(ar[3])
print(ar[3:8])
print(ar[3:8:2])
ar1=np.arange(16).reshape(4,4)
print(ar1)
print(ar1[1,1])
print(ar1[1:3,1:3]) #逗号前面是行。后面是列
print(ar1[1:3])
print(ar1[:,1:3])
布尔值索引
te=np.array(['rose','hh','jack','rpbot','tom'])
print(te)
data=np.random.randn(5,4)
print(data)
print(te=='tom')
print(data[te=='tom'])
筛选出大于0的数和赋值
print(data<0)
print(data[data<0])
data[data<0]=0
对数组的处理
1.转置
arr=np.arange(15).reshape(3,5) #生成一个3行5列的二维数组
print(arr)
行和列转换
print(arr.T)
轴对换(中间轴兑换数据)
print(np.transpose(arr))
三维数组的转换
arr2=np.arange(16).reshape((2,2,4))
print(arr2)
print(arr2.transpose((1,0,2)))
2.排序
arr=np.array([2,3,231,22,11,44,55])
arr.sort() #一维数组直接排序
print(arr)
arr=np.array([[2,3,9],[1,4,21],[3,22,13]])
print(arr)
arr.sort(axis=0) #二维数组排序按指定方向排序,列轴方向排
print(arr)
arr.sort(axis=1) #二维数组排序按指定方向排序,行轴方向排
print(arr)
3.数组的添加
arr=np.array([[2,3,9],[1,4,21]])
print(arr)
arr1=np.append(arr,[[7,8,9]],axis=0) #指定0是添加到后面会多一列,不指定就会降维
print(arr1)
arr2=np.append(arr,[[1,2,3],[2,3,4]],axis=1) #指定1是添加到列里会多几行,不指定就会降维
print(arr2)
arr3=np.insert(arr,1,[1,2,3],axis=0) #指定位置插队进去
print(arr3)
arr4=np.insert(arr,2,44,axis=0) #广播机制
print(arr4)
4.数组的删除
arr=np.arange(12).reshape(3,4)
print(arr)
print(np.delete(arr,9)) #直接删除会降维
print(np.delete(arr,2,axis=0)) #按行删除
print(np.delete(arr,2,axis=1)) #按列删除
5.重复数据与去重
arr=np.array([1,2,3,4,4,5,6,7,7,8,1,2])
print(np.unique(arr)) #去重
#数据的拼接
a=np.array([[1,3],[2,3]])
b=np.array([[4,3],[4,8]])
print(np.concatenate((a,b),axis=0)) #按行拼接
print(np.concatenate((a,b),axis=1)) #按列拼接
6.数组的堆叠
(1)堆叠
a=np.array([[1,3],[2,3]])
b=np.array([[4,3],[4,8]])
print(np.hstack((a,b))) #水平堆叠
print(np.vstack((a,b))) #垂直堆叠
print(np.stack((a,b),axis=0)) #指定0轴方向进行堆叠===升维
(2)拆分
arr=np.arange(16).reshape(4,4)
print(arr)
print(np.hsplit(arr,2)) #垂直拆分拆列
print(np.vsplit(arr,2)) #水平拆分拆行
print(np.split(arr,2,axis=1)) #指定方向拆分
常用的统计函数
a=np.array([[1],[2],[3]])
b=np.array([['a'],['b'],['c']])
a=np.nan
b=np.inf 一个数字除以0,(python中直接会报错,numpy中是一个inf或者-inf)
print(a,b)
t=np.arange(36,dtype=float).reshape(4,9)
print('统计非零的个数',np.count_nonzero(t))
print('整个数组求和',np.sum(t))
print('0轴方向上求和',np.sum(t,axis=0))
print('平均值',np.mean(t))
print('标准差',np.std(t))
print('中位数',np.count_nonzero(t))
print('次方函数',np.power(2,3))
print('底数什么的不是好董',np.log(10))
将条件逻辑表述为数组运算
arr1=np.array([1,3,4,5,])
arr2=np.array([2,4,6,8,])
arr3=np.array([True,False,True,False,])
print(list(zip(arr1, arr2, arr3)))
#三元表达式 为真的结果 if条件 else 为假的结果
result=[(x if c else y) for x,y,c in zip(arr1,arr2,arr3)]
print(result)
#np.where (条件,x,y) 满足条件输入x ,不满足输出为 y
arr3=np.array([[1,3],[5,7]])
arr4=np.array([[2,4],[6,8]])
print(np.where([[True, False], [True, False]], arr3, arr4))
#没有x y 时,则输出满足条件元素的下标
w=np.array([99,66,55,88])
print(np.where(w > 60))
#把满足条件的改为190,不满足的改为-190
print(np.where(w > 60,190,-190))
#把满足条件的改为190,不满足的保持原来的数
print(np.where(w > 60,190,w))