Python数据分析-NumPy库的介绍与使用
·
1. 初识Numpy
NumPy是一个开源的Python科学计算库,它提供了一个强大的N维数组对象`ndarray`和大量的数学函数库,用于处理大规模数据集。它的核心功能包括多维数组的高效操作、数组广播、丰富的数学和线性代数运算、灵活的索引和切片、以及便捷的输入/输出接口,使其在数据分析、机器学习、图像处理和信号处理等多个科学计算领域得到广泛应用。
2. 创建Numpy数组
2.1 创建一维数组
import numpy as np
d1 = np.array([1,2,3,4,5,6])
print(d1)
| 功能 | 代码 |
|---|---|
| 类型numpy.ndarry | print(type(d1)) |
| 输出元素个数 | print(d1.size) |
| 输出数组维度 | print(d1.ndim) |
2.2 创建二维数组
2.2.1拆分一维数组
先创建一个由0开始的15个数 ,再将其拆分成一个,三行五列的二维数组。
注意:元素的个数和拆分的二维参数要匹配否则报错。
d2 = np.arange(15)
d2 = d2.reshape(3,5)
或者:
d2 = np.arange(15).reshape(5,3)
2.2.2 创建Numpy类型数组
import numpy as np
#内置方式创建二维数组,数据类型是list
data = [[1,2,3],[4,5,6]]
#创建numpy数组,更改后数据类型是numpy.ndarray
data = np.array(data)
print(data)
2.3 创建全0/1数组
创建10个元素的数组,默认填充0
import numpy as np
print(np.ones(10)) #一维全1数组
print(np.zeros(10)) #一维全0数组
print(np.zeros((2,5))) #二维全0数组,且两行三列
print(np.zeros((2,3,4))) #三维的2x3x4全0数组
print(np.empty((1,2,3))) #三维空数组,输出的是id地址
3.转换数据类型
print(data.dtype) #查看数据类型
import numpy as np
data = np.array([1,2,3,4,5,6]) #数据类型:int32
data = np.array([1,2,3,4,5,6],dtype=np.float64) #类型转换
data = data.astype(np.int64) #数据类型:int64
4. 索引与切片
索引和切片用于获取数组中部分(区间)的数据:
data = np.array([1,2,3,4,5,6])
4.1索引
4.1.1 一维数据索取
获取数字4的值,通过下标指向要获取的数据,下标值又0至无限大
print(data[3]) #4
负数从右侧向左侧读,用于获取最后一个数
print(data[-2]) #5
4.1.2 二维数据索取
将一维数组改为2行7列的二维数组:
[[ 0 1 2 3 4 5 6]
[ 7 8 9 10 11 12 13]]
data = np.arange(14).reshape(2,7)
print(data)
print(data[0,4]) #4
print(data[-1,-1]) #13
print(data[-1,-1],data[0,-1]) #13 6
4.1.3 三维数据索取
data = np.arange(30).reshape(2,3,5)
print(data)
print(data[1,0,0]) #15
print(data[0,2,-1],data[1,2,-1]) #14 29
print(data[0][-1][-1],data[1][-1][-1]) #14 29
4.2切片
4.2.1 一维数据切片
data = np.array([1,2,3,4,5,6])
print(data[0:3]) #左闭右开 [1 2 3]
print(data[2:]) #[3 4 5 6]
print(data[:4]) #[1 2 3 4]
print(data[:-2]) #[1 2 3 4]
4.2.2 二维数据切片
参数1:行参数 ; 参数2:列参数
data = np.arange(14).reshape(2,7)
print(data[1:,:3]) #[[7 8 9]]
print(data[:,3:4]) #[[ 3] [10]]
print(data[1:,3:4]) #[[10]]
4.2.3 三维数据切片
data = np.arange(30).reshape(2,3,5)
print(data[0:1,:,0:2])
#[[[ 0 1]
# [ 5 6]
# [10 11]]]
5.数组运算
创建所用数据:
import numpy as np
a = np.random.random(10000)*10
b = np.random.random(10000)*10
print(a)
print(b)
5.1 算数运算(加减乘除)
print(np.add(a,b))#a+b
print(np.subtract(a,b))#a-b
print(np.multiply(a,b))#a*b
print(np.divide(a,b))#a/b
5.2 数学运算(三角函数)
ang = np.array([0,30,45,60,90,120,135,150,180])
rad = np.sin(ang*np.pi/180)
rad = np.cos(ang*np.pi/180)
print(rad)
5.3 统计运算
data = np.array([1,2,3,4,5])
5.3.1 均值
print(data.mean())
print(np.average(data))
5.3.2 配置权重
print(np.average(data,weights=np.array([2,2,1,1,1])))
print(np.average(data,weights=np.array([1,1,1,2,3])))
5.3.3 中位数
print(np.median(data))
5.3.4 方差
print(np.var(data))
5.3.5 标准差
print(np.std(data))
5.3.6 聚合运算(累加、累乘、最值)
print(np.sum(data))#累加
print(np.prod(data))#累乘
print(np.max(data))#最大值
print(np.min(data))#最小值
5.4 筛选排序
5.4.1 筛选
输出选中数据的下标
print(np.where(data>3))
print(np.where(data<3))
5.4.2 排序
print(np.sort([1,9,5,2,4,0,3,7,2,6,3]))
print(np.sort([1,9,5,2,4,0,3,7,2,6,3])[::-1]) #倒序
5.5 矩阵
1.转置:
将行向量d转为列向量:
print(d)
print(d.T)
2.点积(np.dot)
1.一维数组点积
import numpy as np
# 定义两个一维数组
a = np.array([1, 2, 3])
c = np.array([4, 5, 6])
# 计算点积
result = np.dot(a, c)
# 打印结果
print(result) # 输出应该是 32,因为 1*4 + 2*5 + 3*6 = 32
2.二维数组点积
import numpy as np
# 定义两个二维数组(矩阵)
a = np.array([[1, 2], [3, 4]])
c = np.array([[5, 6], [7, 8]])
# 计算矩阵乘积
result = np.dot(a, c)
# 打印结果
print(result)
# 输出应该是:
# [[19 22]
# [43 50]]
# 因为 1*5 + 2*7 = 19, 1*6 + 2*8 = 22, ...
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐


所有评论(0)