1 Numpy数组
作为基于C语言实现,同时支持快速数学运算的存储结构化数据(数值、文本、布尔值等),多用于处理表格、矩阵、时间序列等多维数据。通过对数据清洗(去重、缺失值处理)、特征工程(归一化、标准化),可以了解到数据的一些统计指标(均值、方差、分位数、相关性等)。
1.1 生成一维数组以及多维数组
#输入:
import numpy as np
d = np.array([1.0,2.0,3.0])
print("一维numpy的数值是:",d,"\n其类型是:",type(d))
f = np.array([[1,3,4],[2,5,7],[35,75,2]])
print("二维Numpy数组:",f,"\n其维度大小是:",f.shape,"\n其数值类型是:",f.dtype)
#输出:
一维numpy的数值是: [1. 2. 3.]
其类型是: <class 'numpy.ndarray'>
二维Numpy数组: [[ 1 3 4]
[ 2 5 7]
[35 75 2]]
其维度大小是: (3, 3)
其数值类型是: int32
1.2 numpy的算数运算:
#输入:
# 数组间的运算 (需要注意:Numpy数组进行算术运算,实质上是对先关对应位置的元素进行算术运算,因此数组元素个数需要相同)
x = np.array([1,2,3,4,5])
y = np.array([3,4,6,7,9])
a = x + y
b = x * y
c = x - y
print("两个Numpy数组相加的结果是:",a,"\n两个Numpy数组相乘的结果是:",b,"\n两个Numpy数组相减的结果是:",c)
#数组与单个数值(标量)进行运算,实质是一种广播机制
print("对X这个数组每个元素加倍后:",x/2)
#输出:
两个Numpy数组相加的结果是: [ 4 6 9 11 14]
两个Numpy数组相乘的结果是: [ 3 8 18 28 45]
两个Numpy数组相减的结果是: [-2 -2 -3 -3 -4]
对X这个数组每个元素加倍后: [0.5 1. 1.5 2. 2.5]
1.3 广播机制的介绍
广播(Broadcasting)是NumPy中处理不同形状数组间运算的核心机制,可以跨维度运算、自动对其维度、简化复杂操作。
具体规则如下:
维度补齐:向形状较小的数组添加长度为1的维度。
尺寸扩展:将尺寸为1的维度扩展到与较大数组对应维度相同。
#输入:
#形状不同的数组之间也可以进行运算
A = np.array([[1,2],[3,4]])
B = np.array([10,20])
print("A:",A,"\nB:",B,"\n相乘进行广播之后:",A*B)
#输出:
A: [[1 2]
[3 4]]
B: [10 20]
相乘进行广播之后: [[10 40]
[30 80]]
一维数组B被“巧妙地”变成了和维数组A相同的形状,然后再以对应元素的方式进行运算。(其实就是不同维度的数组进行算术运算时,对低纬数组进行扩充,但注意低纬数组的行或者列必须有一个为一维)
小总结:广播机制通过自动对齐数组维度,使不同形状的数组能够高效完成运算,是数据分析中实现向量化计算的关键技术,显著提升代码简洁性和执行效率。
1.4 元素访问
#输入:
G = np.random.randn(3,4)
print('G数组是:',G)
print("G数组的数据维度:",G.shape)
#访问方法一:
print("G的第一行元素是:",G[0])
print("G的第二行第一个元素:",G[1,0],end = '\n\n')
#访问方法二:(采用for循环对各个元素进行访问)
for i in G:
print(i)
#访问方法三:(使用数组访问各个元素)
C = G.flatten() # X转换为一维数组
print("\n\n使用数组访问:",C,)
#输出:
G数组是: [[-0.45132324 -0.30489257 1.70598086 -0.27545694]
[ 0.62754857 -0.44401377 0.26855323 1.18982925]
[ 0.78136244 0.77328339 0.70791744 1.99157336]]
G数组的数据维度: (3, 4)
G的第一行元素是: [-0.45132324 -0.30489257 1.70598086 -0.27545694]
G的第二行第一个元素: 0.6275485692733624
[-0.45132324 -0.30489257 1.70598086 -0.27545694]
[ 0.62754857 -0.44401377 0.26855323 1.18982925]
[0.78136244 0.77328339 0.70791744 1.99157336]
使用数组访问: [-0.45132324 -0.30489257 1.70598086 -0.27545694 0.62754857 -0.44401377
0.26855323 1.18982925 0.78136244 0.77328339 0.70791744 1.99157336]
1.5 Numpy数组的不等式运算
#输入:
print(G>0.5)
#输出:
[[False False True False]
[ True False False True]
[ True True True True]]
#得到的是一个布尔值的数组
2 Matplotlib相关介绍
Matplotlib 是 Python 中最流行的数据可视化库,用于创建各种静态、动态和交互式图表。它就像一把「绘图魔法棒」,能将枯燥的数据变成直观的图形,帮助用户更好地理解和分析数据。
下面是代码演示:
2.1图形显示(绘制sinx&cos图形)
# 输入:
import numpy as np
import matplotlib.pyplot as plt #导入数据格式以及绘图工具
#生成数据
x = np.arange(0,6,0.1) # 以0.1为单位,生成0到6的数据
y1 = np.sin(x)
y2 = np.cos(x)
#图形绘制
plt.plot(x,y1,label = "sin")
plt.plot(x,y2,label = "cos",linestyle = "--")
plt.xlabel("x")
plt.ylabel("y")
plt.title("sin & cos")
plt.legend() #用来显示图例
plt.show()
图形显示:
2.2 图像显示(本地文件用Jupyter notebook显示)
#输入
import matplotlib.pyplot as plt
from matplotlib.image import imread
image = imread(r"D:\桌面\研究生\4581.jpg_wh860.jpg")
#注意:文件路径需要的Jupyter notebook所在路径一致
plt.imshow(image)
plt.show()
输出: