Python Library - NumPy之初见

提示:以下为学习笔记,供参考,后续会根据学习情况进行更新

目录

前言

一、NumPy是什么?

二、使用步骤

1.安装库

2.导入库

3.创建数组

4.数组属性

三、思考

四、作业

作业解法1:

作业解法2:

五、学习资料



前言

NumPy在Python的数据计算,图像处理中有着重大作用,那么NumPy是什么?

一、NumPy是什么?

NumPy取自Numeriacal Python,在Python中它被广泛用于科学计算和工程领域。

NumPy库能提供多维数组对象(如数组、矩阵),以及快速对数组、矩阵进行的各种操作,例如数学计算,逻辑判断,形状处理,排序,选择,I/O,离散傅里叶变换,线性代数,基本数据统计等。

二、使用步骤

1.安装库

在Windows 命令行运行窗口使用pip命令进行安装

pip install numpy

2.导入库

代码如下(示例):

import numpy as np

3.创建数组

代码如下(示例):

# 可以使用np.zeros(), np.ones(), np.empty(), np.arange(), np.linspace()创建数组
a = np.zeros(2)                  # a 的内容是 [0. 0.]
a = np.ones(2)                   # a 的内容是 [1. 1.]
a = np.empty(2)                  # a 的内容是 [0. 0.]
a = np.arange(2, 5, 1.5)         # a 的内容是 [2.  3.5]
a = np.linspace(1, 10, num = 5)  # a 的内容是 [1.  3.25  5.5  7.75  10.]

4.数组属性

使用ndim, shape ,size,以及dtype可以获得数组对应的属性。

数组的维数:ndim;数组的形状:shape;数组包含的元素数量:size;数组元素的数据类型:dtype.

a = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]])
print(a.ndim)       #结果为 2
print(a.dtype)      #结果为 int32
print(a.shape)      #结果为 (3, 4)
print(a.size)       #结果为 12

三、思考

如何连接数组?np.concatenate((arry1,arry2))

如何对数组进行运算?

如何改变数组的形状,大小?array.reshape((m,n))

如何改变数组的数据类型? array.astype(np.uint8)

四、作业

创建一个可以表达如下图片的数组

提示 line1 = ([0,0,0,0,0,0,255,255,255,255,255,255,0,0,0,0,0,0])

黑色的像素用0表示,白色的用255表示,则上图可以用一个二维数组来表示。所以选哟想办法生成一个符合要求的二维数组。

作业解法如下,欢迎网友提供、指导更便捷的解法,谢谢!

作业解法1:

通过循环形成1维数组,再进行数组形态变化形成二维数组

# 先创建两个基本1维数组
a = ([0,0,0,0,0,0,255,255,255,255,255,255,0,0,0,0,0,0])
b = ([255,255,255,255,255,255,0,0,0,0,0,0,255,255,255,255,255,255])
# 再通过循环,依次将创建的两个基本数组首位连接起来
c1=([])
for i in range(6):
    c1 = np.concatenate((c1,a))
for i in range(6):
    c1 = np.concatenate((c1,b))
for i in range(6):
    c1 = np.concatenate((c1,a))

#强制将元素类型转换维无符号8位整型
c2 = c1.astype(np.uint8)

#改变拼接的数组形状,形成一张图
c3 = c2.reshape((18,18))

#为了验证,导入matplotlib库来进行图形显示
import matplotlib.pyplot as plt
plt.imshow(c3,'gray')

作业解法2:

取消for循环,主要运用数组的运算来实现

# 创建 0, 1元素的一维数组
aa = np.zeros(6, dtype=np.uint8)
bb = np.ones(6, dtype = np.uint8)

#按照图片的规律连接成两组新的数组
cc = np.concatenate((aa,bb,aa))
kk = np.concatenate((bb,aa,bb))

#对两组数组进行形态变化并相互进行运算
gg=cc*(np.reshape(kk,(18,1)))+kk*(np.reshape(cc,(18,1)))

#打印数组
print(gg)

打印出数组gg,显示数据的效果如下,

# 数组与255相乘,将其转化为需要的二维数组
print(255*gg)

注释掉解法1和解法2图形显示和数据打印的部分,计算运行所需要的时间,

解法1是 37.9 µs ± 176 ns

解法2是9.7 µs ± 170 ns

使用数组直接进行计算相比使用For循环进行操作所需要花费的时间少很多,更方便、快捷。看来这就是使用NumPy的意义。期待继续的了解与学习!

五、学习资料

NumPy参考如下链接。

NumPy documentation — NumPy v2.0.dev0 Manual

  • 8
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值