Python 基础科学模块包以及数据可视化

基础科学模块包

前言

在深度学习机器学习的领域当中,Numpy是向量运算或矩阵运算的主力军。它极大简化了向量和矩阵的操作处理。在平时的学习和工作当中,对于Numpy的一些基础操作不是特别熟悉,尤其是高维数据,当沿着某个轴运算的时候,无法确定其运算原理。另外tensorflow里面的api与numpy运算也有着非常相似的操作,容易混淆,在tensorflow计算图中尽量避免使用numpy的api,不然会报错。因此,这篇博客主要总结Numpy、tensorflow、Pandas的知识以及一些api。相关的api参考可以访问各自的数据模块包的官网

Numpy

导入Numpy数据包:

import numpy as np

Numpy的基本数据类型是 ndarray,意味着 N-dimensional array,N维数组。它的属性有ndim:维度数量,shape:一个表示各维度大小的元组,即数组的形状,dtype:一个用于说明数组元素类型的对象。size:元素总个数,即shape中各数组相乘。

基本操作

  1. 创建数组
    创建数组可以通过 np.array()创建numpy数组,它的类型是 numpy.ndarray
    Python 基础科学模块包以及数据可视化
    另外还可以通过 np.onesnp.zeros()np.random.random()根据自己实际的需求生成对应的数组。
    Python 基础科学模块包以及数据可视化
  2. 索引
    Python 基础科学模块包以及数据可视化
    布尔索引
    Python 基础科学模块包以及数据可视化

多维数组的索引

Python 基础科学模块包以及数据可视化
3. 聚合
Python 基础科学模块包以及数据可视化
4. 点乘
Python 基础科学模块包以及数据可视化
5. 矩阵索引
Python 基础科学模块包以及数据可视化
6. 矩阵聚合
Python 基础科学模块包以及数据可视化
不仅可以聚合矩阵中的所有值,还可以使用 axis 参数执行跨行或跨列聚合:
Python 基础科学模块包以及数据可视化
注意: axis=n表示沿着第n个下边变化的方向。如一个3维的数组a为(3,4,2),每个元素可以表示a 000 a_{000}a 0 0 0 ​,a 001 a_{001}a 0 0 1 ​,a 010 a_{010}a 0 1 0 ​,a 011 a_{011}a 0 1 1 ​,a 100 a_{100}a 1 0 0 ​…以此类推,那么 axis=0求和,表示a 000 + a 100 + a 200 , a 001 + a 101 + a 201 a_{000}+a_{100}+a_{200},a_{001}+a_{101}+a_{201}a 0 0 0 ​+a 1 0 0 ​+a 2 0 0 ​,a 0 0 1 ​+a 1 0 1 ​+a 2 0 1 ​
Python 基础科学模块包以及数据可视化
常见的一元函数如下:

一元函数说明abs、fabs计算整数、浮点数或复数的绝对值。对于非复数值,可以使用fabssqrt计算各个元素的平方根,相当于arr0.5square计算各元素的平方,相当于arr2exp计算各元素的指数e的x次方log, log10, log2, log1p分别为自然对数、底数是10的log,底数为2的log,log(1+x)sign计算各元素的正负号:1 正数,0 零 , -1 负数cell计算各元素的ceiling值,即大于等于该值的最小整数floor计算各元素的floor值,即小于等于该值的最大整数isnan判断哪些值是NaN的布尔类型数组isfinite,isinf分别表示哪些元素是有穷的,哪些元素是无穷的logical_not计算各元素not x的真值,相当于 ~ 和 -arr

  1. 转置
    Python 基础科学模块包以及数据可视化

; 相关API

  1. np.unique
    Python 基础科学模块包以及数据可视化
  2. 二进制运算

方法描述bitwise_and按元素计算两个数组的按位与bitwise_or按元素计算两个数组的按位或bitwise_xor按元素计算两个数组的按位异或invert按元素计算按位求逆,或按位求非

  1. numpy.nditer
    参考地址:https://numpy.org/devdocs/reference/generated/numpy.nditer.html#numpy.nditer
  2. 线性代数

矩阵和向量积

方法描述dot两个数组的点积linalg.multi_dot在单个函数调用中计算两个或更多数组的点积,同时自动选择最快的求值顺序vdot返回两个向量的点积inner计算两个数组的内积outer计算两个向量的外积matmul计算两个数组的矩阵乘积

  1. 逻辑运算
    | 方法 | 描述 |
    |–|–|
    |logical_and|按元素计算x1和x2的真值|
    |logical_or|按元素计算x1或x2的真值|
    |logical_not|计算非x元素的真值|
    |logical_xor|按元素计算x1 xor x2的真值|
    Python 基础科学模块包以及数据可视化
  2. 数学函数
    四舍五入

方法描述around平均舍入到给定的小数位数round将数组舍入到给定的小数位数fix四舍五入为0floor返回输入的底限ceil返回输入的上限

  1. 搜索

方法描述argmax返回沿着某个轴方向的最大值下标argmin返回沿着某个轴方向的最小值下标where根据条件选择x中的元素还是y中的元素

np.where
np.where是三元表达式 x if confition else y的矢量化版本。

Python 基础科学模块包以及数据可视化
  1. 统计相关的
    均值和偏差
    |方法|描述|
    |–|–|
    |median|沿着某个轴计算中值|
    |average|沿着某个轴计算平均值,有权重|
    |mean|沿着某个轴计算平均值|
    |std|计算标准差|
    |var|计算偏差|

实际应用

  1. 公式
    实现可用于矩阵和向量的数学公式是 NumPy 的关键用例。这就是 NumPy 是 python 社区宠儿的原因。例如均方差公式,它是监督机器学习模型处理回归问题的核心:M S E = 1 n ∑ i = n N ( Y i ^ − Y i ) 2 MSE=\frac{1}{n}\sum^N_{i=n}(\hat{Y_i}-Y_i)^2 M S E =n 1 ​i =n ∑N ​(Y i ​^​−Y i ​)2

对应的numpy公式:

MSE = (1/n)*np.sum(np.square(prediction-labels))
  1. 数据表示

  2. 表格和电子表格

    Python 基础科学模块包以及数据可视化
  3. 音频和时间序列
    音频文件是样本的一维数组。每个样本都是一个数字,代表音频信号的一小部分。CD 质量的音频每秒包含 44,100 个样本,每个样本是-65535 到 65536 之间的整数。这意味着如果你有一个 10 秒的 CD 质量 WAVE 文件,你可以将它加载到长度为 10 * 44,100 = 441,000 的 NumPy 数组中。如果想要提取音频的第一秒,只需将文件加载到 audio 的 NumPy 数组中,然后获取 audio[:44100]。
    Python 基础科学模块包以及数据可视化

Pandas

为了节省时间,这里不做详细的描述了,详情可以查看:pandas中文网

数据可视化

Tensorboard

Tensorboard是Tensorflow的一个神器级工具,给用户提供了模型可视化的功能。在构建神经网络模型过程中,只要模型开始训练,我们需要关心神经网络的参数变化、超参数变化,准确率怎么样、loss收敛了吗以及debug程序。因此Tensorboard通过结合web应用为我们提供这些功能,它将模型训练过程中的细节以图表的形式通过浏览器可视化展现,可以清晰感知weight、bias、accuracy等变化,把握训练趋势。

Python 基础科学模块包以及数据可视化

通过tensorboard提供的图标,可以清楚知道loss和accuracy在每一个epoch中是怎么变化。Tensorboard提供了查看其他内容的功能:

  • 在scalars下可以看到accuracy、bias、weight等趋势
  • 在images和audio可以看到输入的数据
  • 在graphs中可以看到模型的结构
  • 在histogram可以看到activations,gradients或者weights等变量每一步的分布
  • distribution和histogram是两种不同的形式,可以看到整体状况
  • 在embedding看到PCA将高维数据投影到3D空间后的数据关系

Python 基础科学模块包以及数据可视化

; Matplotlib

Matplotlib的官方API文档地址:https://matplotlib.org/stable/index.html。

plot(x, y)

import matplotlib.pyplot as plt
import numpy as np

plt.style.use('_mpl-gallery')

x = np.linspace(0, 10, 100)
y = 4 + 2 * np.sin(2 * x)

fig, ax = plt.subplots()

ax.plot(x, y, linewidth=2.0)

ax.set(xlim=(0, 8), xticks=np.arange(1, 8),
       ylim=(0, 8), yticks=np.arange(1, 8))

plt.show()

Python 基础科学模块包以及数据可视化

scatter(x, y)

import matplotlib.pyplot as plt
import numpy as np

plt.style.use('_mpl-gallery')

np.random.seed(3)
x = 4 + np.random.normal(0, 2, 24)
y = 4 + np.random.normal(0, 2, len(x))

sizes = np.random.uniform(15, 80, len(x))
colors = np.random.uniform(15, 80, len(x))

fig, ax = plt.subplots()

ax.scatter(x, y, s=sizes, c=colors, vmin=0, vmax=100)

ax.set(xlim=(0, 8), xticks=np.arange(1, 8),
       ylim=(0, 8), yticks=np.arange(1, 8))

plt.show()

Python 基础科学模块包以及数据可视化

bar/barh

import matplotlib.pyplot as plt
import numpy as np
plt.style.use('_mpl-gallery')

np.random.seed(3)
x = 0.5 + np.arange(8)
y = np.random.uniform(2, 7, len(x))

fig, ax = plt.subplots()

ax.bar(x, y, width=1, edgecolor="white", linewidth=0.7)

ax.set(xlim=(0, 8), xticks=np.arange(1, 8),
       ylim=(0, 8), yticks=np.arange(1, 8))

plt.show()

Python 基础科学模块包以及数据可视化

stem

import matplotlib.pyplot as plt
import numpy as np

plt.style.use('_mpl-gallery')

np.random.seed(3)
x = 0.5 + np.arange(8)
y = np.random.uniform(2, 7, len(x))

fig, ax = plt.subplots()

ax.stem(x, y)

ax.set(xlim=(0, 8), xticks=np.arange(1, 8),
       ylim=(0, 8), yticks=np.arange(1, 8))

plt.show()

Python 基础科学模块包以及数据可视化

step

import matplotlib.pyplot as plt
import numpy as np

plt.style.use('_mpl-gallery')

np.random.seed(3)
x = 0.5 + np.arange(8)
y = np.random.uniform(2, 7, len(x))

fig, ax = plt.subplots()

ax.step(x, y, linewidth=2.5)

ax.set(xlim=(0, 8), xticks=np.arange(1, 8),
       ylim=(0, 8), yticks=np.arange(1, 8))

plt.show()

Python 基础科学模块包以及数据可视化

hist

import matplotlib.pyplot as plt
import numpy as np

plt.style.use('_mpl-gallery')

np.random.seed(1)
x = 4 + np.random.normal(0, 1.5, 200)

fig, ax = plt.subplots()

ax.hist(x, bins=8, linewidth=0.5, edgecolor="white")

ax.set(xlim=(0, 8), xticks=np.arange(1, 8),
       ylim=(0, 56), yticks=np.linspace(0, 56, 9))

plt.show()

Python 基础科学模块包以及数据可视化

boxplot

import matplotlib.pyplot as plt
import numpy as np

plt.style.use('_mpl-gallery')

np.random.seed(10)
D = np.random.normal((3, 5, 4), (1.25, 1.00, 1.25), (100, 3))

fig, ax = plt.subplots()
VP = ax.boxplot(D, positions=[2, 4, 6], widths=1.5, patch_artist=True,
                showmeans=False, showfliers=False,
                medianprops={"color": "white", "linewidth": 0.5},
                boxprops={"facecolor": "C0", "edgecolor": "white",
                          "linewidth": 0.5},
                whiskerprops={"color": "C0", "linewidth": 1.5},
                capprops={"color": "C0", "linewidth": 1.5})

ax.set(xlim=(0, 8), xticks=np.arange(1, 8),
       ylim=(0, 8), yticks=np.arange(1, 8))

plt.show()

Python 基础科学模块包以及数据可视化

Seaborn

seaborn的官方网站是http://seaborn.pydata.org/。seaborn库还是很强大,对我而言比matplotlib好用多。

Python 基础科学模块包以及数据可视化

Original: https://blog.csdn.net/u012655441/article/details/121790626
Author: RyanC3
Title: Python 基础科学模块包以及数据可视化

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/761636/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球