数据科学包一:numpy基础及进阶


Numpy 和 pandas的运行速度会比字典、列表运行更快。

numpy的简单运用

Numpy的基本语句:定义一个矩阵

import numpy as np
array=np.array([[1,2,3],[2,3,4],[4,5,6],[6,7,8]])
print(array)
print(array.ndim)
print(array.size)
print(array.shape)

注意括号的形式
运行结果:
在这里插入图片描述

利用numpy生成矩阵和数字

a=np.array([[1,2,3],[2,3,4],[4,5,6],],dtype=np.int64)#生成一个矩阵,数据类型是整型
b=np.zeros((3,4),dtype=np.int64)#生成一个0矩阵,形状是3*4
c=b=np.ones((3,4),dtype=np.int64)#生成一个1矩阵,形状是3*4
d=np.arange(12).reshape((3,4))#生成一个从0到11的矩阵,形状是3*4,注意后面是两层括号
e=np.linspace(0,30,10).reshape((2,5))#生成一个线段,从0到30,分为10段,形状2*5

数组运算

a=np.array([10,20,30,40])
b=np.arange(4)
c=a-b#对应相减
d=b**2#对应平方
e=np.sin(a)#对应求正玄
f=b<3#对应判断是否大于3

矩阵乘法

numpy中矩阵的相乘总共有两种方式,各个元素对应相乘,以及数学上矩阵的乘法。

a=np.array([[10,20],[30,40]])
b=np.arange(4).reshape(2,2)
c=a*b #对应数字相乘
d=np.dot(a,b)#数学上的两个矩阵相乘
e=a.dot(b)#等同于上面的表达式

矩阵求和以及最大最小值

a=np.random.random((2,4))#生成2*4的随机阵
b=np.sum(a)#整个矩阵求和
b2=np.sum(a,axis=1)#axis=表示纵向求和,axis=1表示横向求和,不打axis表示整个矩阵求和,同理应用于max,min等函数
c=np.max(a)
d=np.min(a)

矩阵的条件索引及内部运算

a=np.random.random((3,4))#产生一个3行4列的随机阵
print(a)
print(np.argmax(a))#索引最大值所在的位置,返回一个数字,为最大值从左到右从上到下的排序,下列同理
print(a.argmax())#部分函数也可以用这样的表达形式,注意a需要是numpy的变量
print(np.argmin(a))
print(np.average(a))#平均
print(np.median(a))#中位数
print(np.cumsum(a))#累加,输出一个数组
print(np.diff(a))#累差,每一行中,后一个减前一个的数,输出一个3*3的矩阵
print(np.nonzero(a))#返回两个数组,分别代表非零元素的行向量和列向量
print(np.sort(a))#对矩阵进行排序,排序规则是对矩阵的每一行进行排序,从左到右递增
print(np.transpose(a))#对矩阵进行转置
print(a.T)#等同于矩阵转置
print(np.clip(a,0.3,0.6))#clip函数,小于0.3的数字全部变为0.3,大于0.6的数字全部变为0.6

矩阵的精确索引

a=np.arange(3,15).reshape((3,4))
print(a)
print(a[1])#输出第二行的数组
print(a[1][1])#输出第二行第二列的数组
print(a[1,1])#等同于print(a[1][1])
print(a[1,2:])#打印第二行,第三列及以后的数值,类似于列表的索引方式

矩阵的行、列及元素遍历

#numpy支持自动的按行索引
for row in a:
    print(row)
#numpy并不支持按列索引,想要打印列的值的话,
for row in a.T:
    print(row)
#如果想要打印矩阵中的所有元素
for item in a.flat:
    print(item)

矩阵的合并

a=np.array([1,1,1])
b=np.array([2,2,2])
print(np.vstack((a,b)))#垂直合并
print(np.hstack((a,b)))#水平合并
print([:,np.newaxis])#水平数组变单列纵向矩阵
c=np.concatenate((a,b,a,b),axis=0)# 多个数组合并,可以通过axis调整合并的维度

矩阵的分割

a=np.arange(12).reshape((3,4))
b=np.split(a,2,axis=1)#将矩阵从纵向等量分割为两部分,必须是相等分割,比如如果分为三块就会报错
c=np.array_split(a,3,axis=1)#将矩阵纵向分割为2,1,1的形式
d=np.hsplit(a,4)#纵向分割
e=np.split(a,3)#横向分割

矩阵的拷贝赋值

如果用等号进行赋值,两个矩阵将指向同一对象,可能在实际应用中带来不便,所以需要的时候可以调用copy函数
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值