02.numpy 的使用
2022-09-17 本文已影响0人
一直流浪
2、numpy 的使用
2.1 numpy 的创建:
(1)使用 np.array() 创建
使用 array() 创建一维数组
import numpy as np
arr = np.array([1,2,3])
arr
![](https://img.haomeiwen.com/i28346185/cbd070944a84e8ac.png)
(2)使用array()创建二维数组
arr = np.array([[1,2,3],[4,5,6]])
arr
![](https://img.haomeiwen.com/i28346185/376ef2ac18e6df53.png)
(3)数组和列表的区别是什么?
- 数组中存储的数据元素类型必须是统一类型
- 优先级:
- 字符串 > 浮点数 > 整数
![](https://img.haomeiwen.com/i28346185/b46702a873d3e904.png)
2.2 numpy 的使用
将外部的一张图片读取加载到numpy数组中,然后尝试改变数组元素的数值查看对原始图片的影响
(1)使 matplotlib.pyplot 创建
# 导入需要的模块
import matplotlib.pyplot as plt
img1 = plt.imread('1.jpg') # 返回的数组,数组中装载的就是图片内容
plt.imshow(img1) #将numpy数组进行可视化展示
![](https://img.haomeiwen.com/i28346185/d22899c77c0d4c01.png)
(2)将图片数组的每一个元素减去100
img1 = img1 - 100 #将每一个数组元素都减去100
plt.imshow(img1)
![](https://img.haomeiwen.com/i28346185/515f64019a8586df.png)
会发现的各个像素点都发生的变化。
2.3 numpy的常用方法
(1)ones() 创建一个用1填充的数组
np.ones(shape=(3,4)) #创建一个3行4列的数组,用1填充
![](https://img.haomeiwen.com/i28346185/620786f9514339e8.png)
(2)linspace()一维的等差数列数组,num设置元素个数
np.linspace(0,100,num=21) #一维的等差数列数组
![](https://img.haomeiwen.com/i28346185/0871f38a01344ec8.png)
(3)arange()创建等差数列,step设置步长
np.arange(10,20,step=2) #创建一位的等差数列,一个10到20,步长为2的数组
![](https://img.haomeiwen.com/i28346185/5330dbc5683e6ce8.png)
(4)random.randint()创建随机数列
np.random.randint(0,100,size=(5,4)) #创建一个5行4列元素在0到100之间的随机数组
![](https://img.haomeiwen.com/i28346185/d771f1fa615ae601.png)
2.4 numpy 的常用属性
先创建一个numpy数组:
arr = np.random.randint(0,100,size=(5,4)) #创建一个5行4列元素在0到100之间的随机数组
arr
![](https://img.haomeiwen.com/i28346185/f20687d12cfc6236.png)
(1)shape返回数组的形状
arr.shape #返回数组的形状
![](https://img.haomeiwen.com/i28346185/97bc026af250c324.png)
(2)ndim返回数组中的维度
arr.ndim #返回数组中的维度
![](https://img.haomeiwen.com/i28346185/cf60f77ba8924f15.png)
(3)size返回数组的大小
arr.size #返回数组的大小
![](https://img.haomeiwen.com/i28346185/a60b4c3672ea9845.png)
(4)dtype 返回数组的元素类型
arr.dtype #返回数组的元素类型
![](https://img.haomeiwen.com/i28346185/4296687b8491b664.png)
(5)type 返回数组的数据类型
type(arr) #数组的数据类型
![](https://img.haomeiwen.com/i28346185/7eb96c68c7d4c03d.png)
(6)创建一个数组,指定数组元素类型为int32
arr = np.array([1,2,3],dtype='int32')
arr.dtype
![](https://img.haomeiwen.com/i28346185/6d40f6fd35b959d4.png)
(7)修改数组元素类型
arr.dtype = 'uint8' #修改数组的元素类型
arr.dtype
![](https://img.haomeiwen.com/i28346185/354be24fddb61596.png)
2.5 numpy 切片操作
目标:
- 切片操作
- 切出前两列的数据
- 切出前两行的数据
- 切出前两行的前两列数据
- 数组数据反转
- 练习:将一张图片上下左右进行反转操作
- 练习:将图片进行指定区域的裁剪
(1)切出arr数组的前两行数据
arr[0:2]
![](https://img.haomeiwen.com/i28346185/0c249a3657c8f08d.png)
(2)切出arr数组的前两列数据
arr[:,0:2]
![](https://img.haomeiwen.com/i28346185/eed8ac56f0da73d1.png)
(3)切出arr数组的前两行前两列数据
arr[0:2,0:2]
![](https://img.haomeiwen.com/i28346185/0a5e14d60caf7a99.png)
(4)先查看原数组,然后将原数组进行行倒置
arr
![](https://img.haomeiwen.com/i28346185/b28e3e7c47fed9e5.png)
#将数组的行倒置
arr[::-1]
![](https://img.haomeiwen.com/i28346185/11c34f9c6ca4f18d.png)
(5)将数组的列导致
arr[:,::-1]
![](https://img.haomeiwen.com/i28346185/04c84134a378eb65.png)
(6)将所有元素倒置
arr[::-1,::-1]
![](https://img.haomeiwen.com/i28346185/b729e90fbd0d0a44.png)
(7)将一张图片进行左右反转
- 加载图片
img2 = plt.imread('1.jpg')
plt.imshow(img2)
![](https://img.haomeiwen.com/i28346185/5cfc327029d5b35c.png)
- 查看图片数组形状,参数1:行数,参数2:列数,参数3:颜色。
img2.shape
![](https://img.haomeiwen.com/i28346185/313d73c601d828fb.png)
- 查看图片数组的元素
img2
![](https://img.haomeiwen.com/i28346185/3346247ee0bebea2.png)
- 将图片左右进行反转
plt.imshow(img2[:,::-1,:])
![](https://img.haomeiwen.com/i28346185/6c5c6931423c33ac.png)
(8)对图片进行裁剪
#图片裁剪功能
plt.imshow(img2[200:550,100:450,:])
![](https://img.haomeiwen.com/i28346185/e34d23bd902a1dee.png)