目录
numpy模块
import numpy as np
'''创建序列型的对象,任意维度数组'''
x=np.array([1,2,3,4])
y=np.array([[1,2,3],[4,5,6],[7,8,9]])
print(x)
print(y)
print("________________________________________________________________")
'''等差数列'''
a=np.arange(1,20,4) #初始值为1,结束值为20(结果不含值),步长为4
b=np.arange(1,20) #若省略4,这步长默认为1
print(a)
print(b)
print("________________________________________________________________")
'''创建随机数组 利用numpy中的子模块random中的元素'''
#1 、 rand() 数组中的每个元素都在【0.1)区间内的随机数
c=np.random.rand(3) #3代表创建3个元素
d=np.random.rand(2,3) # 生成一个两行三列的二维数组,其元素在【0,1)自间
print(d)
print(c)
print("________________________________________________________________")
# 2、randn()函数 元素符合标准正态分布(均值0,标准差1)
e=np.random.randn(3)
f=np.random.randn(3,3)
print(e)
print(f)
print("________________________________________________________________")
# 3. randint() 创建在指定范围内的随机整数
g=np.random.randint(1,5,10) #元素在【1,5)的十个元素
h=np.random.randint(1,10,(4,2)) #创建一个4行2列二维数组,数组元素为【1,10)区间内的随机整数
print(g)
print(h)
print("________________________________________________________________")
数组属性:主要指数组的行列数,元素个数,元素的数据类型,数组的维数
import numpy as np
y=np.array([[1,2],[3,4],[5,6]]) #3行2列
print(y)
print("________________________________________________________________")
'''shape查看数组的行,列数'''
print(y.shape)
print("行数为:",y.shape[0]) # 表示查看数组行数
print("列数为:",y.shape[1]) # 表示查看数组列数
print("________________________________________________________________")
'''size查看元素个数'''
print("元素个数为:",y.size)
print("________________________________________________________________")
'''dtype 和astype查看和转换元素的数据类型'''
a=np.array([[1.3,2,3.6,4],[5,6,7.8,8]])
print(a.dtype)
a1=a.astype(int) #float转int
print(a1)
print(a1.dtype)
print("________________________________________________________________")
'''ndim 查看数组维数'''
print(y.ndim) #表示几维数组
import numpy as np
'''选取单个元素'''
arr=np.array([12,2,40,64,56,6,57,18,95,17,21,12])
#从头开始0 ,从尾开始用-1
print(arr[0])
print(arr[-2])
'''选取连续的元素'''
#不包含最后一个元素
print(arr[1:6]) #索引值从1(第2个元素)到 索引值从6(第7个元素)
print(arr[3:-2]) #索引值从3(第4个元素)到 索引值从-2(倒数第2个元素)
'''选取不连续的元素————切片'''
print(arr[1:5:2]) #1(第二个元素)代表起始位置,5代表结束位置,2代表步长 若2没写,则默认为1
import numpy as np
'''选取单个元素'''
arr=np.array([[1,2,3],[4,5,6],[7,8,9],[10,11,12]])
print(arr[1,2]) #选取了第2行第3列的元素
'''选取单行或单列的元素'''
print(arr[2]) #表示第3行的一整行的元素
print(arr[:,1]) #表示第2列的一整列的元素
'''选取某些行或某些列的元素'''
print(arr[1:3]) #第一行到第4行元素
print(arr[:,1:3]) #第2列到第4列。不包括第4列
'''选取行列元素'''
print(arr[1:2,1:3])
注意:行列之间用逗号隔开,从什么到什么用冒号
数组的重置:将某个维度的数组转换为另一个维度的数组
数组的转换:转换是重置的一个特殊情况——将行列重置,元素不变
Reshape()函数可以在不改变数组元素的内容和个数的情况下重塑数组的形状
import numpy as np
arr=np.array([1,2,3,4,5,6,7,8])
a=arr.reshape(2,4) #将arr转换成2行4列的二位数组
print(a)
Reshape()函数还可以更改多维数组的形状
i
import numpy as np
'''多维数组在维度不变的情况下,改变行列'''
arr=np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]])
a=arr.reshape(4,3) #创建一个4行3列数组
print(a)
'''多维数组转变为一维数组 , 利用flatten()和 ravel()'''
print(arr.flatten())
print(arr.ravel())
i
mport numpy as np
arr=np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]])
print(arr)
print("______________________________________")
'''T属性'''
print(arr.T) #数组的行变为列
print("______________________________________")
'''通过transpose()函数'''
arr1=np.transpose(arr) #通过索引值
print(arr1)
import numpy as np
arr=np.array([[1,2,3],[4,5,6]])
'''append()函数'''
arr1=np.append(arr,[[7,8,9]]) #二维数组变成一维数组
arr2=np.append(arr,[[7,8,9]],axis=0) #axis=0 代表行数加,列数不变
arr3=np.append(arr,[[7,8],[9,10]],axis=1) #axis=1表示添加在列上,行数不变
print(arr1)
print("______________________________________")
print(arr2)
print("______________________________________")
import numpy as np
arr=np.array([[1,2],[3,4],[5,6]])
'''insert()函数'''
arr1=np.insert(arr,1,[7,8]) #1(第二个元素之前)代表插入元素的位置
arr2=np.insert(arr,1,[7,8],axis=0) #行
arr3=np.insert(arr,1,[7,8,9],axis=1) #列
print(arr1) #变一维
print("_______________________________")
print(arr2)
print("_______________________________")
print(arr3)
import numpy as np
arr=np.array([[1,2,3],[4,5,6],[7,8,9]])
'''delete()函数'''
arr1=np.delete(arr,2)
arr2=np.delete(arr,2,axis=0) #行
arr3=np.delete(arr,2,axis=1) #列
print(arr1) #先展开arr为一维,再在2(第三位元素)位置进行删除
print("_______________________________")
print(arr2)
print("_______________________________")
print(arr3)
数组的缺失值处理可以分为两步:第一步,找出缺失值的位置;第二步,用指定的值对缺失值进行填充
第一步,找出缺失值的位置
import numpy as np
arr=np.array([1,2,3,4,5,6,np.nan,8,9]) #np.nan表示缺失值
print(arr)
#isnan()函数可以标记数组中缺失值的位置
print(np.isnan(arr))
False代表该位置有元素,true代表此处有缺失值
第二步,用指定的值对缺失值进行填充——依旧使用isnan()函数
arr[np.isnan(arr)]=0
print(arr)
import numpy as np
arr=np.array([8,4,2,3,5,5,2,5,5,6,8,8,9])
arr1=np.unique(arr) #去重处理
arr1,arr2=np.unique(arr,return_counts=True)
print(arr1)
print(arr2)
[2 3 4 5 6 8 9]是arr1=np.unique(arr) #去重处理 结果
[2 1 1 4 1 3 1] 是去重后数组arr1中的每个元素在元素组arr中出现的次数。
import numpy as np
arr1=np.array([[1,2,3],[4,5,6]])
arr2=np.array([[7,8,9],[10,11,12]])
注意:带合并的几个数组的维度必须相同,一维数组的形状可以不一样,但是多维数组的形状必须相同(行列相同)。
使用——concatenate()函数在列上增加=vstack()函数
arr3=np.concatenate((arr1,arr2),axis=0)
arr4=np.vstack((arr1,arr2))
结果:
使用——concatenate()函数在行上增加=hstack()函数
arr4=np.concatenate((arr1,arr2),axis=1)
arr3=np.hstack((arr1,arr2))
结果:
一维数组
import numpy as np
arr=np.array([1,2,3,4,5,6,7,8,9,10,11,12])
'''split()——均分'''
arr1=np.split(arr,2) #将arr数组拆分成两个大小相同的数组
'''split()——根据索引值位置拆分'''
arr2=np.split(arr,[2,6]) #[2,6]表示在索引值2(第三个元素)和索引值6(第七个元素)的位置进行拆分。
print(arr1)
print(arr2)
多维数组
import numpy as np
arr=np.array([[1,2,3,4,],[5,6,7,8],[9,10,11,12],[13,14,15,16]])
'''hsplit()——横向拆分为多个数组'''
arr1=np.hsplit(arr,2)
'''vsplit()——纵向拆分'''
arr2=np.vsplit(arr,2)
print(arr1)
print("_______________________________")
print(arr2)
import numpy as np
arr1=np.array([[1,2,3,4,],[5,6,7,8]])
arr2=np.array([[9,10,11,12],[13,14,15,16]])
arr3=arr1+arr2
arr4=arr1*arr2
arr5=arr1+5
arr6=arr1*10
求和——sum()
import numpy as np
arr=np.array([[1,2,3,4,],[5,6,7,8],[9,10,11,12]])
arr1=arr.sum() #全加
arr2=arr.sum(axis=0) #列加
arr3=arr.sum(axis=1) #行加
求均值——mean()
import numpy as np
arr=np.array([[1,2,3,4,],[5,6,7,8],[9,10,11,12]])
arr1=arr.mean() #全加
arr2=arr.mean(axis=0) #列加
arr3=arr.mean(axis=1) #行加
import numpy as np
arr=np.array([[1,2,3,4,],[5,6,7,8],[9,10,11,12]])
arr1=arr.max() #所有最大
arr2=arr.max(axis=0) #每一列的最大值
arr3=arr.max(axis=1) #每一行的最大值