数据分析小白训练营:基于python编程语言的Numpy库介绍(第三方库)(上篇)
(一)Numpy库的安装
安装指定版本的Numpy库,打开命令提示符,输入下图内容,只需要将1.25.5的版本修改成个人需要的版本,然后按下回车键,numpy库就安装在python中:
指定版本numpy库安装可能出现与当前python解释器不适配的报错情况,numpy库版本不同,函数功能也有变化,想知道当前电脑的python解释器适配什么版本的numpy库,有一下两种方法:
- 在命令提示符,输入python,按下回车键,查看当前python解释器版本,然后去浏览器搜索当前版本的python解释器适配哪些numpy库
- 在命令提示符里,任意输入一个版本的版本,如果出现报错,命令提示符也会在报错的同时,给你适配版本的python解释器
(二)认识numpy和配置环境
对大量数据进行分析,python中的列表和字典可以存储大量数据,但是无法对数据进行计算,而numpy库可以将数据存储为矩阵的格式,
numpy库将数据存储为矩阵的格式的优势:
- 把数据当作矩阵来处理,可以大大提高运行速度(numpy库的底层用c封装,python只是调用代码,方便用户操作)
- 极大方便了计算(numpy库依赖math数学库)
- 金融行业将大量数据存储在excel中,但是excel执行的速度没有numpy库执行的速度快
示例代码:
#numpy第三方库,可以将数据存储为矩阵的形式
import numpy as np#import numpy:导入numpy库,as np:取别名为np(可不写)
#numpy(底层用C,Python):数字,矩阵)处理数据的速度比较忙,:
#科学计算 库,包含了很多和数学相关的公式#计算一下sin(),cos,tan()
print(np.sin(1))#这里参数为弧度,角度(D)和弧度(R)之间的关系:D = (180/π) × R
#计算一下绝对值
print(np.abs(-1))#abs():求绝对值
# np.还有很多函数,进入源代码浏览一下。
#numpy 还可以进行矩阵运算
#numpy库依赖math数学库
(三)创建array
- 矩阵的数据类型叫做ndarray
np.array(...)
是 NumPy 的构造函数,不是任何实例方法- array:将矩阵数据可视化展示
示例代码:
#array(数组) ->模拟了矩阵import numpy as np#导入numpy as np#一维数组
list1 = [1,2,3,4,5] #python自带的列表数据类型
v = np.array(list1)
print(v)#二维数组[多个一维数组构成]
m = np.array([list1,list1,list1])
print(m)#三维数组[多个二维数组构成]
z = np.array([[list1,list1,list1],[list1,list1,list1],[list1,list1,list1]])
print(z)z = np.array([m,m,m])
#更高维的y = np.array([z,z,z])"""
数组的基本属性
"""
#一维数组
a = v.shape #查询数组的形状
b = v.ndim #查询数组的维度
c = v.size #查询数组中数据个数
print(type(v))
d = v.dtype #查询数组中的元素类型,int8, int16, int32, int64: 表示不同长度的有符号整数。
# uint8, uint16, uint32, uint64: 表示不同长度的无符号整数。
# float16, float32, float64 (float 是 float64 的简写): 表示不同精度的浮点数。
# complex64, complex128 (complex 是 complex128 的简写): 表示复数,其中64和128表示复数的实部和虚部的位数。
# bool: 布尔类型,可以存储True或False。
# str_: 表示定长字符串,可以通过添加数字来指定字符串的长度,如 'S10' 表示长度为10的字符串。
# object: 表示Python对象类型,可以用来存储任意Python对象。
#二维数组
a = m.shape
b = m.ndim
c = m.size
print(type(m))
d = m.dtype
#三维数组
z.shape
z.ndim
z.size
type(z)
z.dtype
(四)数组的升维
核心功能:
np.array()
- 将列表转为NumPy数组
reshape()
- 改变数组形状,返回新数组
-1
:自动计算该维度大小- 例:
v.reshape(4,-1)
→ 4行,列数自动推算
ndim
- 查看数组维度数(如二维数组返回
2
)
- 查看数组维度数(如二维数组返回
resize()
- 直接修改原数组,无返回值
- 例:
v.resize(4,4)
→ 强制将原数组变为4×4
示例代码:
import numpy as nplist1 = [1,2,3,4,5,6,7,8,1,2,3,4,5,6,7,8]# list1:[1,2,3,4,5,6,7,8,1,2,3,4,5,6,7,8]
v = np.array(list1)# v:[1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8]
print(v)#一维变二维[-1表示自己计算]【返回一个改变后的矩阵】
# a.reshape(newshape, order='C')
# a:要重新形状的数组。
# newshape:一个整数或者元组,用于定义新的形状。
# order:可选参数,指定元素在数组中的读取顺序。'C'意味着按行,'F'意味着按列,'A'意味着原顺序,'K'意味着元素在内存中的出现顺序。
r1 = v.reshape(4,4)r1 = v.reshape(4,-1)
print(r1)
r1.ndim#一维变三维
r2 = v.reshape(1,-1,2)
print(r2)#二维变三维
r3 = r1.reshape(2,2,4)
print(r3)#resize()【不返回计算结果】【直接修改原始数组】
#r4 = v.resize(2,4)
#print(r4)
r4 = v.resize(4,4)#直接会修改原始数据到相应的维度
print(v)
(五)数组的降维
核心功能:
1. 创建 & 升维
np.array(list1)
→ 将列表转为NumPy数组(默认一维)v.reshape(2,2,2)
→ 将数组升维为 2×2×2 的三维数组
2. 查看维度
v.ndim
→ 返回数组的维度数(此处为3
)
3. 降维为二维
v.reshape(1,8)
→ 将三维数组降维为 1行8列的二维数组
4. 降维为一维
ravel()
:展平为一维(可能共享内存,修改可能影响原数组)flatten()
:展平为一维(独立副本,修改不影响原数组)
5. 直接修改形状
v.shape = (2,4)
→ 就地修改原数组为 2×4 的二维数组
示例代码:
import numpy as nplist1 = [1,2,3,4,5,6,7,8]
v = np.array(list1)
v = v.reshape(2,2,2)
print(v)
v.ndim#将三维降到二维
r1 = v.reshape(1,8)
print(r1)
r1.ndim#将高维数据转化为一维
#ravel()
r2 = v.ravel()
print(r2)
r2.ndim#flatten()
r3 = v.flatten()#非常重要,
print(r3)
# flatten方法返回的是原数组的副本,这意味着对返回的一维数组所做的任何修改都不会影响原始的多维数组。
# ravel方法(如果可能)返回的是原始数组的视图,因此对返回的一维数组所做的修改可能会影响原始的多维数组。这是因为ravel只是改变了数组的形状和步长,而没有复制数据。#小补充shape也可以实现降维
v.shape = (2,4)#通过直接对array数据的属性进行修改。
print(v)