软件测试|Python科学计算神器numpy教程(一)
前言
之前我们使用matplotlib绘制了不一样的图形,其实在我们的绘制图像时,我们输入的数据都是经过处理之后再通过matplotlib以及pillow进行绘制的。我们在绘制图形的脚本里,引入了一个对数组执行数学运算和相关逻辑运算的第三方库——Numpy,当然numpy功能不止于此,它还是python科学计算的基础库,现在我们就来介绍一下numpy的使用。
安装
因为numpy是Python的第三方库,所以我们需要自行安装,安装完成之后才可以使用,安装只需要一条命令:
pip install numpy
注:numpy通常会结合SciPy 程序包一起使用,SciPy 可以看做对 NumPy 库的扩展,它在 NumPy 的基础上又增加了许多工程计算函数。
Numpy ndarray对象
NumPy 定义了一个 n 维数组对象,简称 ndarray 对象,它是一个一系列相同类型元素组成的数组集合。数组中的每个元素都占有大小相同的内存块,您可以使用索引或切片的方式获取数组中的每个元素。
ndarray 对象采用了数组的索引机制,将数组中的每个元素映射到内存块上,并且按照一定的布局对内存块进行排列,常用的布局方式有两种,即按行或者按列。
创建ndarray对象
Numpy提供了内置函数array()来创建ndarray,语法格式如下:
numpy.array(object, dtype = None, copy = True, order = None,ndmin = 0)
参数说明:
参数 | 描述说明 |
---|---|
object | 表示一个数组序列 |
dtype | 可选参数,通过它可以更改数组的数据类型 |
copy | 可选参数,表示数组能否被复制,默认是 True |
order | 以哪种内存布局创建数组,有 3 个可选值,分别是 C(行序列)/F(列序列)/A(默认) |
ndim | 用于指定数组的维度 |
创建一维数组
import numpy as np
a = np.array([11, 10, 9])
print(a)
print(type(a))
-------------------------
输出结果如下:
[11 10 9]
<class 'numpy.ndarray'>
创建多维数组
import numpy as np
a = np.array([[11, 10, 9],[6, 7, 8]])
print(a)
print(type(a))
---------------
输出结果如下:
[[11 10 9]
[ 6 7 8]]
<class 'numpy.ndarray'>
改变数组元素的数据类型,可以使用设置 dtype
c=numpy.array([2,4,6,8],dtype=“数据类型名称”)
现在我们将数组中的元素改为字符串类型,如下:
import numpy as np
c=np.array([2,4,6,8],dtype="str")
print(c)
-------------------
输出结果如下:
['2' '4' '6' '8']
查看数组维数
我们可以通过ndim查看数组的维度
import numpy as np
arr = np.array([[1, 2, 3, 4], [4, 5, 6, 7], [9, 10, 11, 23]])
print(arr.ndim)
--------------------
输出结果如下:
2
创建指定维度数组
使用 ndim 参数可以创建不同维度的数组
import numpy as np
a = np.array([1, 2, 3,4,5], ndim = 2)
print(a)
------------------------------------
输出结果如下:
[[1 2 3 4 5]]
数组变维
数组的形状指的是多维数组的行数和列数。Numpy 模块提供 reshape() 函数可以改变多维数组行数和列数,从而达到数组变维的目的,如下图:
reshape() 函数可以接受一个元组作为参数,用于指定了新数组的行数和列数,示例如下:
import numpy as np
e = np.array([[11,12],[13,14],[15,16]])
print("原数组",e)
e=e.reshape(2,3)
print("新数组",e)
----------------------------
输出结果如下:
原数组 [[11 12]
[13 14]
[15 16]]
新数组 [[11 12 13]
[14 15 16]]
总结
本文主要介绍了numpy模块的安装以及数组的一些常用方法,后续我们将介绍numpy的数据类型。
- 点赞
- 收藏
- 关注作者
评论(0)