百度飞桨课堂小白逆袭大神第三天课程(整理)

简介: 百度飞桨课堂小白逆袭大神第三天课程(整理)

三岁学编程,小白逆袭第三天的笔记

参考资料:https://aistudio.baidu.com/aistudio/projectdetail/428055


Numpy库



中文文档官网:

https://www.numpy.org.cn/

使用方法:

导入库import numpy as np


数组创建


使用array()函数转换成为多维数组,可以是一切序列型的对象(包括其他数组)


import numpy as np
#将列表转换为数组
array = np.array([[1,2,3],
                 [4,5,6]])
print(array)
[[1 2 3]
 [4 5 6]]
#将列表转换为数组
array = np.array(((1,2,3),
                 (4,5,6)))
print(array)
[[1 2 3]
 [4 5 6]]



这里面不能够a = np.array(1,2,3,4)这种形式,他只调用了array()函数并没有传入一个序列型数据!!!


创建初始占位符的几种方法:

① zeros() 指定长度或形状的全部为 0 的数组

②ones() 创建指定长度形状的 内容为 1 的数组

③empty() 创建一个数组,内容随机


emptyarray = np.zeros((2,3))
print(emptyarray)
[[0. 0. 0.]
 [0. 0. 0.]]
 #dtype = 'int64'代表了是整型
emptyarray = np.ones((3,4), dtype='int64')
print(emptyarray)
[[1 1 1 1]
 [1 1 1 1]
 [1 1 1 1]]
emptyarray = np.empty((3,4))
print(emptyarray)
[[6.23042070e-307 1.42417221e-306 1.37961641e-306 1.27945651e-307]
 [1.24610383e-306 1.69118108e-306 8.06632139e-308 1.20160711e-306]
 [1.69119330e-306 1.29062229e-306 1.60217812e-306 1.37961370e-306]]


arange()函数生成一个指定内容的数字数组

使用方法类似与range()

使用方法:np.arange(a, b, c)

a:第一个内容

b:最后一个是(b-1)

c:按照c的步长进行


array = np.arange( 10, 31, 5 )
print(array)
[10 15 20 25 30]


注:此处遵循左闭右开!!!


数组类型的查看



  • 数组维度数组名.ndim
  • 数组形状数组名.shape
  • 数组个数数组名.size
  • 数组元素类型数组名.dtype


array = np.array([[1,2,3],[4,5,6],[7,8,9],[10,11,12]])
print(array)
#数组维度
print(array.ndim)
#数组形状
print(array.shape)
#数组元素个数
print(array.size)
#数组元素类型
print(array.dtype)
[[ 1  2  3]
 [ 4  5  6]
 [ 7  8  9]
 [10 11 12]]#数组内容
2#维度
(4, 3)#形状
12#个数
int32#类型


修改数组(矩阵)的形状


reshape()

array1 = np.arange(6)
print(array1)
[0 1 2 3 4 5]
[[0 1 2]
 [3 4 5]]


注意:文文老师千叮咛万嘱咐,在里面改变形状可以,但是数据的量不能改变,不然会溢出或无中生有。导致报错!


数组计算


数组计算会矢量化,计算都是元素级别,无需遍历即可运算


基本算法


  • 加法两个数组相对应的位置进行加法计算
  • 减法对应位置进行减法操作
  • 乘法对应位置进行乘法操作
  • 除法对应位置进行除法操作,结果是浮点型
  • 幂每个位置分别进行幂操作


arr1 = np.array([[1,2,3],[4,5,6]])
arr2 = np.ones([2,3],dtype=np.int64)
print(arr1 + arr2)
print(arr1 - arr2)
print(arr1 * arr2)
print(arr1 / arr2)
print(arr1 ** 2)
[[2 3 4]
 [5 6 7]]#加法
[[0 1 2]
 [3 4 5]]#减法
[[1 2 3]
 [4 5 6]]#乘法
[[1. 2. 3.]
 [4. 5. 6.]]#除法(浮点型)
[[ 1  4  9]
 [16 25 36]]#幂


矩阵乘法


使用方法 np.dot(矩阵1,矩阵2)

两个矩阵的形状必须是相反的

如(23)的h和(32)的宽度和高度相反的,不然会报错

ValueError: shapes (2,3) and (2,3) not aligned: 3 (dim 1) != 2 (dim 0)

计算方式:第一行和第一列分别相乘的和,第二行和第二列相乘的和,以此类推,不理解看题


arr3 = np.array([[1,2,3],[4,5,6]])
arr4 = np.array([[5, 6], [3,4], [1,2]])
print(np.dot(arr3,arr4))
[[14 20]
 [41 56]]

20200425113232604.png


其他计算


sum() 求和

sum(矩阵名, axis=0)#axis=0求一列的和,=1求一行

max()#最大值

min()#最小值

mean()#平均值

argmax()#最大值下标

argmin()#最小值下标


矩阵转制、拍平


转制:矩阵名.transpose()

拍平:变成一维数组:矩阵名.flatten()


arr3_tran = arr3.transpose()
print(arr3_tran)
print(arr3.flatten())
[[1 4]
 [2 5]
 [3 6]]
[1 2 3 4 5 6]


切片与读取


和列表读取类似,最多带上循环

arr5 = np.arange(0,6).reshape([2,3])
print(arr5)
print(arr5[1])
print(arr5[1][2])
print(arr5[1,2])
print(arr5[1,:])
print(arr5[:,1])
print(arr5[1,0:2])
[[0 1 2]
 [3 4 5]]
[3 4 5]
5
5
[3 4 5]
[1 4]
[3 4]


pandas库



pandas库,第三方库安装:pip install pandas

本人安装时超时了,可以下载.whl格式再进行安装

下载地址:https://www.lfd.uci.edu/~gohlke/pythonlibs/#traits


根据需要下载相应版本

导入库:import pandas as pd

参考地址:pandas中文网:https://www.pypandas.cn/


Series


Series是一种类似于一维数组的对象,它由一维数组(各种numpy数据类型)以及一组与之相关的数据标签(即索引)组成.

这里面的“键”可以重复


20200425115439486.png


一个类似于键值对的样式


s = pd.Series(['a','b','c','d','e'])
print(s)
0    a
1    b
2    c
3    d
4    e
#索引值index可以重复
s = pd.Series(['a','b','c','d','e'],index=[100,200,100,400,500])
print(s)
100    a
200    b
100    c
400    d
500    e
#字典转换为Series
d = {'b': 1, 'a': 0, 'c': 2}
pd.Series(d)
b    1
a    0
c    2


可以通过Series的values和index属性获取其数组表示形式和索引对象


print(s.values)
print(s.index)
['a' 'b' 'c' 'd' 'e']
Int64Index([100, 200, 100, 400, 500], dtype='int64')


可以通过索引的方式选取Series中的单个或一组值


print(s[100])
print(s[[400, 500]])
100    a
100    c
dtype: object
400    d
500    e
dtype: object


Series中最重要的一个功能是:它会在算术运算中自动对齐不同索引的数据

Series 和多维数组的主要区别在于, Series 之间的操作会自动基于标签对齐数据。因此,不用顾及执行计算操作的 Series 是否有相同的标签。

当数据缺失时会用NaN自动补齐


obj1 = pd.Series({"Ohio": 35000, "Oregon": 16000, "Texas": 71000, "Utah": 5000})
obj2 = pd.Series({"California": np.nan, "Ohio": 35000, "Oregon": 16000, "Texas": 71000})
print(obj1 + obj2)
California         NaN
Ohio           70000.0
Oregon         32000.0
Texas         142000.0
Utah               NaN
dtype: float64


DataFrame



2020042512045047.png

DataFrame是一个表格型的数据结构,类似于Excel或sql表

它含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔值等)

DataFrame既有行索引也有列索引,它可以被看做由Series组成的字典(共用同一个索引)

用多维数组字典、列表字典生成 DataFrame


data = {'state': ['Ohio', 'Ohio', 'Ohio', 'Nevada', 'Nevada'], 'year': [2000, 2001, 2002, 2001, 2002], 'pop': [1.5, 1.7, 3.6, 2.4, 2.9]}
frame = pd.DataFrame(data)
print(frame)
    state  year  pop
0    Ohio  2000  1.5
1    Ohio  2001  1.7
2    Ohio  2002  3.6
3  Nevada  2001  2.4
4  Nevada  2002  2.9
#如果指定了列顺序,则DataFrame的列就会按照指定顺序进行排列
frame1 = pd.DataFrame(data, columns=['year', 'state', 'pop'])
print(frame1)
   year   state  pop
0  2000    Ohio  1.5
1  2001    Ohio  1.7
2  2002    Ohio  3.6
3  2001  Nevada  2.4
4  2002  Nevada  2.9


如果遇到了没有数据一样会用NaN进行填充


PIL库



PIL库是一个具有强大图像处理能力的第三方库。

安装:cmd格式下pip install pil

使用方法: from PIL import *


Image



导入from PIL import Image


读取图片等


Image.open()读取图

图片名.show调用计算机软件读取图片

图片名.mode返回图片模式(RGB, RGBA)


图片操作


图片名.rotate()图片旋转()里面填写的是度数默认逆时针旋转

图片名.ceop()图片裁剪括号里面是裁剪位置的左上与右下坐标

图片名.resize()图片缩放,括号里面为照片大缩放后的大小

图片名.transpose(Image.FLIP_TOP_BOTTOM)图片上下镜像

图片名.transpose(Image.FLIP_LEFT_RIGHT)图片左右镜像


Matplotlib库



安装:cmd下pip install Matplotlib

参考地址:Matplotlib中文网:https://www.matplotlib.org.cn

导入:import matplotlib.pyplot as plt

通过构建x 和y的关系生成图片

x = np.linspace(-1,1,50) #等差数列
y = 2*x + 1
#传入x,y,通过plot()绘制出折线图 
plt.plot(x,y)
#显示图形
plt.show()


20200425123718126.png


其他的去官网取经吧!

目录
相关文章
|
10月前
|
机器学习/深度学习 自然语言处理 算法
Jieba分词的准确率提升:使用paddle模式进行分词(使用百度飞桨深度学习模型进行分词)
jieba中的paddle模式是指使用飞桨(PaddlePaddle)深度学习框架加速分词的一种模式。相对于传统的分词算法,paddle模式采用了深度学习模型,可以获得更高的分词准确度和更快的分词速度。
|
12月前
|
人工智能 并行计算 算法
百度飞桨PP-YOLOE ONNX 在LabVIEW中的部署推理(含源码)
使用LabVIEW实现PP-YOLOE的目标检测
169 0
|
机器学习/深度学习 C++
百度飞桨世界冠军带你从零实践强化学习第五天(三岁白话时间)
百度飞桨世界冠军带你从零实践强化学习第五天(三岁白话时间)
151 0
百度飞桨世界冠军带你从零实践强化学习第五天(三岁白话时间)
|
机器学习/深度学习 C++
百度飞桨世界冠军带你从零实践强化学习第四天(三岁白话时间)
这里是三岁,这里吧第四的素材和资料整理了一下,大家康康,有什么不足的欢迎提出,批评指正!!!
94 0
百度飞桨世界冠军带你从零实践强化学习第四天(三岁白话时间)
|
机器学习/深度学习
百度飞桨世界冠军带你从零实践到强化学习第二天
百度飞桨世界冠军带你从零实践到强化学习第二天
337 0
百度飞桨世界冠军带你从零实践到强化学习第二天
|
机器学习/深度学习 并行计算 测试技术
百度飞桨学院小白逆袭大神第四天(笔记+解题思路)
百度飞桨学院小白逆袭大神第四天(笔记+解题思路)
118 0
百度飞桨学院小白逆袭大神第四天(笔记+解题思路)
|
数据可视化 Python
百度飞桨学院小白逆袭大神第三天题目解析
百度飞桨学院小白逆袭大神第三天题目解析
81 0
百度飞桨学院小白逆袭大神第三天题目解析
|
JSON Linux 数据处理
百度飞桨学院小白课程第二天深度解析(小白系列)
百度飞桨学院小白课程第二天深度解析(小白系列)
184 0
百度飞桨学院小白课程第二天深度解析(小白系列)
|
人工智能
百度飞桨学院神奇AI技术
百度飞桨学院神奇AI技术
103 0
百度飞桨学院神奇AI技术
AI:百度飞桨EasyDL多门视频课程,手把手教你如何定制高精度AI模型
AI:百度飞桨EasyDL多门视频课程,手把手教你如何定制高精度AI模型