Python数据科学:学习笔记(1)--Numpy

Python数据科学

1.Numpy

Numpy是python提供的对数据处理的一个包,数据存储方式类似于python列表,但是数据的类型必须一致。Python的list可以包含不同类型。

导入Numpy使用:import numpy as np

1.1Numpy创建数组

实例1:

#创建数组
def numpy1():
    """
    python numpy创建数组
    numpy数组中数据类型相同
    """
    #创建0数组
    array0 = np.zeros(5,dtype=int)
    print(array0)
    #通过列表,创建数组
    array1 = np.array([1,2,4,8,5])
    print(array1)
    #不指定类型,会自动向上转型,保持类型一致
    array2 = np.array([1,3,1.2,3])
    print(array2)
    # 指定数据类型
    array3 = np.array([1,3,1.3],dtype='float')
    print(array3)
    #创建多维数组
    range_list = [range(i,i+3) for i in [2,4,6]]
    array5 = np.array(range_list)
    print(array5)
    #创建3x5的浮点数组,全为1.0
    array6 = np.ones((3,5),dtype=float)
    print(array6)
    #创建2x5的整数数组,全为10
    array7 = np.full((2,5),10)
    print(array7)
    #arange创建数组,start = 0,stop = 20,step = 4
    array8 = np.arange(0,20,4)
    print(array8)
    #创建一个线性数组,start = 0 stop = 20 size = 5
    array9 = np.linspace(0,20,5)
    print(array9)
    #创建一个随机数组(4,2)
    array10 = np.random.random((4,2))
    print(array10)
    #创建一个随机int类型数组
    array11 = np.random.randint(1,5,(3,2))
    print(array11)
    #创建一个均值为1,方差为4的数组
    #正态分布数组4x5
    array12 = np.random.normal(1,4,(4,5))
    print(array12)
    #创建单位矩阵,4x4
    array13 = np.eye(4)
    print(array13)
    #创建一个未初始化数组
    array14 = np.empty(4,dtype=int)
    print(array14)

1.2Numpy数据类型

Numpy只能包含同一类型值,支持的标准数据类型

实例1:

def numpy2():

    '''

    numpy的数据类型

    :return:

    '''

    #bool_  布尔类型

    #int_   整型

    #intc_ C语言整型

    #intp_  索引的整型

    #int8   1字节长度整型 int16  int32  int64

    #uint8  无符号整型 uint16 uint32 uint64

    #float_  浮点

    #float16  半精度浮点

    #float32  单精度浮点

    #float64  双精度浮点

    #complex_ 复数

    #complex64 两个32位浮点表示

    #complex128 两个64位浮点表示

array1 = np.zeros(10,dtype=np.float16)

print(array1)

array2 = np.ones((3,5),dtype="float_")

print(array2)

1.3Numpy数组属性

实例:

def numpy3():

    '''

    numpy数组属性

    :return:

    '''

    #设置随机数种子

    np.random.seed(0)

    array1 = np.random.randint(10,size=5)

    print(array1)

    #二维数组

    array2 = np.random.randint(10,size=(3,5))

    print(array2)

    #三维数组

    array3 = np.random.randint(10,size=(4,3,2))

    print(array3)



    #numpy的属性

    #维度

    print(array3.ndim)

    #size,形状

    print(array3.shape)

    #总大小

    print(array3.size)

    #数据类型

    print(array3.dtype)

    #每个数组元素字节大小

    print(array3.itemsize)

    #整个数组字节大小

    print(array3.nbytes)

1.4Numpy数组索引

实例:

def numpy4():

    '''

    numpy数组索引,切片

    :return:

    '''

    array1 = np.random.randint(10, size=(20))

    print(array1)

    #和python列表索引类似,0开始,-1结束

    print(array1[2])

    print(array1[-2])

    #多维数组

    array2 = np.random.randint(10,size=(5,5))

    print(array2)

    #第1行第5列

    print(array2[1,-1])

    #第0行第2列

    print(array2[0,2])

    #可以通过索引修改指定位置值

    array2[0,3] = 10

    print(array2)



    #数组切片

    #start=1,end =-1,step=2

    array3 = array1[1:-1:2]

    print(array3)

    #索引5以前的数据

    array4 = array1[:5]

    print(array4)

    #索引3到倒数第二个数

    array5 = array1[3:-2]

    print(array5)

    #逆序数组

    array6 = array1[::-1]

    print(array6)

    #每隔3位逆位

    print(array1[::-3])



    #多维数组切片

    #前三行,前三列

    array7 = array2[:3,:3]

    print(array7)

    #前三行,所有列,每隔两列

    array8 = array2[:3,::2]

    print(array8)

    #行列逆序

    array9 = array2[::-1,::-1]

    print(array9)



    #获取单行

    array10 = array2[0,:]

    print(array10)

    #获取单列

    array11 = array2[:,2]

    print(array11)



    #获取的切片值修改后,原数组值也会修改

    array10[3] = 0

    print(array2)

    #copy方式获取切片,修改切片值,不会影响原数组值

    array12 = array2[0,:].copy()

    array12[3] = 10

    print(array2)

#组合索引

array13 = np.random.randint(10,size=(6,6))

print(array13)

#获取行值1,3,2 行数据

array14 = array13[[1,3,2]]

print(array14)

#获取第二行,第5,4,2列值

array15 = array13[2,[5,4,2]]

print(array15)

1.5Numpy数组变形

实例:

def numpy5():

    '''

    numpy数组变形,拼接

    :return:

    '''

    array1 = np.arange(1,10)

    print(array1)

    #转换为3x3矩阵,大小必须保持一致

    array2 = array1.reshape((3,3))

    print(array2)

    #将一维数组转换为行或列向量

    #行向量

    array3 = array1[np.newaxis,:]

    print(array3)

    #列向量

    array4 = array1[:,np.newaxis]

    print(array4)



    #数组拼接

    array5 = np.arange(1,20,3)

    array6 = np.arange(1,10,1)

    array7 = np.concatenate([array5,array6])

    print(array7)

    #多维数组拼接

    array8 = np.random.randint(10,size =(3,2))

    array9 = np.random.randint(10,size =(3,2))

    #垂直拼接,列必须相等

    array10 = np.concatenate([array8,array9])

    #水平拼接,行必须相等

    array11 = np.concatenate([array8,array9],axis=1)

    #垂直拼接

    array12 = np.vstack([array8,array9])

    #水平拼接

    array13 = np.hstack([array8,array9])

    print(array8)

    print(array9)

    print(array10)

    print(array11)



    #数组分裂

    array14 = np.arange(1,20,2)

    print(array14)

    #参数2:拆分的索引位置列表

    a1,a2,a3 = np.split(array14,[3,5])

    print(a1,a2,a3)

    #垂直拆分

    array15 = np.random.randint(10,size=(5,5))

    a11,a22,a33 = np.vsplit(array15,[2,4])

    print(a11,a22,a33)

    #水平拆分

    h11,h22 = np.hsplit(array15,[3])

    print(h11,h22)

1.5Numpy的运算

包含Numpy中基础加减乘除运算,三角函数,指数运算,聚合运算,布尔运算,排序

实例:

def numpy6():

    '''

    numpy的运算

    :return:

    '''

    #通用函数

    #各个运算符的实现,通过numpy的通用函数

    #运算符:+,-,*,/

    array1 = np.array([1,2,4,6])

    array2 = array1 + 5

    print(array2)

    array3 = array1 - 2

    print(array3)

    array4 = array1 * 2

    print(array4)

    array5 = array1 / 3

    print(array5)

    #整除

    array6 = array1 // 3

    print(array6)

    #负号

    array7 = -array1

    print(array7)

    #** 平方

    array8 = array1 ** 2

    print(array8)

    #% 取余

    array9 = array1 % 2

    print(array9)

    #通用函数

    #+

    array21 = np.add(array1,5)

    print(array21)

    #-

    array22 = np.subtract(array1,2)

    print(array22)

    #负号

    array23 = np.negative(array1)

    print(array23)

    #*

    array24 = np.multiply(array1,4)

    print(array24)

    #/

    array25 = np.divide(array1,3)

    print(array25)

    #整除,//

    array26 = np.floor_divide(array1,2)

    print(array26)

    #**

    array27 = np.power(array1,3)

    print(array27)

    #% 取余

    array28 = np.mod(array1,4)

    print(array28)



    #获取绝对值

    array31 = np.abs(np.array([-1,0,-4,5]))

    print(array31)

    array32 = np.absolute(np.array([-1,0,-4,5]))

    print(array32)

    array33 = abs(np.array([-1,0,-4,5]))

    print(array33)



    #三角函数

    array41 = np.linspace(0,np.pi,3)

    print(np.sin(array41))

    print(np.cos(array41))

    print(np.tan(array41))

    #反三角函数

    array42 = np.array([-1,0,1])

    print(np.arcsin(array42))

    print(np.arccos(array42))

    print(np.arctan(array42))



    #指数运算

    array51 = np.array([2,5,1,6])

    #底数为e

    print(np.exp(array51))

    #底数为2

    print(np.exp2(array51))

    #底数为3

    print(np.power(3,array51))

    #指数逆运算

    array52 = np.array([3,5,20,66])

    print(np.log(array52))

    print(np.log2(array52))

    print(np.log10(array52))



    #指定运算结果位置

    array61 = np.array([1,3,6,3])

    array62 = np.empty(4)

    array63 = np.zeros(8)

    np.multiply(array61,2,out=array62)

    print(array62)

    #每隔2位插入

    np.multiply(array61,2,out=array63[::2])

    array63[::2] = array61 * 2

    print(array63)



    #聚合运算

    array71 = np.array([-1,5,-4,4])

    #求和

    print(np.add.reduce(array71))

    print(np.sum(array71))

    #类乘

    print(np.multiply.reduce(array71))

    #外积

    print(np.add.outer(array71,array71))



    #最大最小值

    array81 = np.array([3,55,24,29,33])

    print(np.max(array81))

    print(np.min(array81))

    #多维度聚合

    array82 = np.random.randint(10,size=(4,3))

    print(array82)

    #每一列最小

    print(array82.min(axis=0))

    #每一行最小

    print(array82.min(axis=1))

    #乘积

    print(np.prod(array82,axis=0))

    #NaN安全计算乘积

    print(np.nanprod(array81))

    #均值

    print(np.mean(array81))

    print(np.nanmean(array81))

    #标准差

    print(np.std(array81))

    print(np.nanstd(array81))

    #方差

    print(np.var(array81))

    print(np.nanvar(array81))

    #中位数

    print(np.median(array81))

    print(np.nanmedian(array81))

    #最小值索引

    print(np.argmin(array81))

    print(np.nanargmin(array81))

    #最大值索引

    print(np.argmax(array81))

    print(np.nanargmax(array81))

    #分位值

    #四分之一

    print(np.percentile(array81,25))

    #四分之三

    print(np.percentile(array81,75))

    #验证任何元素是否为真

    print(np.any(array81))

    #验证所有元素是否为真

    print(np.all(array81))



    #布尔运算

    array91 = np.array([1,5,3,5,2,6])

    #布尔运算 <  >  <=  >=  ==   !=

    array92 = array91 < 3

    array92 = np.less(array91,3)

    #等于

    array93 = np.equal(array91,3)

    #不等于

    array94 = np.not_equal(array91,3)

    #小于等于

    array95 = np.less_equal(array91,3)

    #大于

    array96 = np.greater(array91,3)

    #大于等于

    array97 = np.greater_equal(array91,3)

    #操作布尔数组

    #统计True个数

    print(np.count_nonzero(array92))

    #是否存在任意数大于3

    print(np.any(array91>3))

    #是否所有数大于3

    print(np.all(array91>3))

    #布尔运算符

    #& 与

    #| 或

    #^ 异或

    #~  非

    print(np.any(array91==3) & np.any(array91>4))



    #排序

    array100 = np.array([10,20,22,2,5,29])

    print(array100.sort())

    #返回排序后数组索引

    print(array100.argsort())

    array101 = np.random.randint(10,size=(4,4))

    print(array101)

    #每列排序

    print(np.sort(array101,axis=0))

    #每行排序

    print(np.sort(array101,axis=1))

    #部分排序

    #每行前3个值最小,其余不变

    print(np.partition(array101,3,axis=1))

    #索引

    print(np.argpartition(array101,3,axis=1))

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

偶是不器

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值