机器学习(神经网络基础篇)——个人理解篇2(概念+代码)

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()

输出:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值