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


三岁学编程,小白逆袭第三天的笔记
参考资料: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]]

在这里插入图片描述

其他计算

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数据类型)以及一组与之相关的数据标签(即索引)组成.
这里面的“键”可以重复
在这里插入图片描述
一个类似于键值对的样式

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

在这里插入图片描述
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()

在这里插入图片描述
其他的去官网取经吧!

发布了41 篇原创文章 · 获赞 124 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_45623093/article/details/105740402