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

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

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

参考资料: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


其他的去官网取经吧!

目录
相关文章
|
6月前
|
Java
杨老师课堂_Java教程第五篇之函数运用
杨老师课堂_Java教程第五篇之函数运用
28 1
|
7月前
|
SQL 安全 调度
网安预习课程笔记(九到十节)
本文是一篇关于渗透测试案例的分享,案例主要包括弱口令、SQL注入、内网渗透等多个环节,详细描述了渗透测试工作者如何通过一系列步骤获取不同服务器和系统的管理员权限。提到了一些关键的IP地址、数据库和服务器的发现,以及利用这些漏洞如何获取的权限。文章最后讨论了漏洞报告的组成部分,强调了报告的规范性和清晰度对于有效沟通和解决问题的重要性。 请注意,由于原始内容包含多个图片和链接,摘要中并未包含这些元素。
71 11
|
小程序 搜索推荐 Java
程序员推荐的良心网站合集!(第二期)
程序员推荐的良心网站合集!(第二期)
252 0
程序员推荐的良心网站合集!(第二期)
|
JSON Linux 数据处理
百度飞桨学院小白课程第二天深度解析(小白系列)
百度飞桨学院小白课程第二天深度解析(小白系列)
226 0
百度飞桨学院小白课程第二天深度解析(小白系列)
|
数据可视化 Python
百度飞桨学院小白逆袭大神第三天题目解析
百度飞桨学院小白逆袭大神第三天题目解析
114 0
百度飞桨学院小白逆袭大神第三天题目解析
|
弹性计算 运维 Linux
实战训练营-第一期学习报告
实战训练营-第一期学习报告
115 0
冬季实战营第三期:小白的进阶之路
我可能是为数不多的一直跟练到现在的人了吧
冬季实战营第三期:小白的进阶之路
|
弹性计算 关系型数据库 MySQL
阿里云冬季实战营(第一期学习记录)
阿里云冬季实战营(第一期学习记录)训练营日期:2022年1月17日 - 2022年1月23日
|
弹性计算
在阿里云学习的心得感想
初步接触阿里云服务器,在学习的过程中收获知识
1223 0
|
域名解析 网络协议 安全
清华雨课堂实现太难?手把手教你复刻一个“小红书”玩一玩!
清华雨课堂实现太难?手把手教你复刻一个“小红书”玩一玩!
335 0
清华雨课堂实现太难?手把手教你复刻一个“小红书”玩一玩!