文章目录
- 1.概述
- 2.数组基础
- 2.1.数据标量类型
- 2.2.数据结构化类型
- 3.数组常用属性和方法
- 4.创建数组
- 5.作者答疑
1.概述
NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。NumPy 是一个运行速度非常快的数学库,主要用于数组计算,包含:一个强大的N维数组对象 ndarray,广播功能函数,整合 C/C++/Fortran 代码的工具,线性代数、傅里叶变换、随机数生成等功能。numpy是python数字分析的基本套件之一。另外两个是SciPy(Scientific Python)和Matplotlib(绘图库)。
2.数组基础
numpy.array(object, dtype = None, copy = True, order = None, subok = False, ndmin = 0)
序号 | 参数及描述 |
1 | object 任何暴露数组接口方法的对象都会返回一个数组或任何(嵌套)序列。 |
2 | dtype 数组的所需数据类型,可选。 |
3 | copy 可选,默认为true,对象是否被复制。 |
4 | order C(按行)、F(按列)或A(任意,默认)。 |
5 | subok 默认情况下,返回的数组被强制为基类数组。 如果为true,则返回子类。 |
6 | ndmin 指定返回数组的最小维数。 |
2.1.数据标量类型
NumPy 支持比 Python 更多种类的数值类型。 下表罗列了 NumPy 中定义的不同标量数据类型。
序号 | 数据类型及描述 |
1 | bool_ 存储为一个字节的布尔值(真或假) |
2 | int_ 默认整数,相当于 C 的long,通常为int32或int64 |
3 | intc 相当于 C 的int,通常为int32或int64 |
4 | intp 用于索引的整数,相当于 C 的size_t,通常为int32或int64 |
5 | int8 字节(-128 ~ 127) |
6 | int16 16 位整数(-32768 ~ 32767) |
7 | int32 32 位整数(-2147483648 ~ 2147483647) |
8 | int64 64 位整数(-9223372036854775808 ~ 9223372036854775807) |
9 | uint8 8 位无符号整数(0 ~ 255) |
10 | uint16 16 位无符号整数(0 ~ 65535) |
11 | uint32 32 位无符号整数(0 ~ 4294967295) |
12 | uint64 64 位无符号整数(0 ~ 18446744073709551615) |
13 | float_ float64的简写 |
14 | float16 半精度浮点:符号位,5 位指数,10 位尾数 |
15 | float32 单精度浮点:符号位,8 位指数,23 位尾数 |
16 | float64 双精度浮点:符号位,11 位指数,52 位尾数 |
17 | complex_ complex128的简写 |
18 | complex64 复数,由两个 32 位浮点表示(实部和虚部) |
19 | complex128 复数,由两个 64 位浮点表示(实部和虚部) |
2.2.数据结构化类型
可以在numpy中定义结构化的数据类型,可用numpy中的dtype函数构建,调用方式如下:
numpy.dtype(object, align, copy)
参数为:
Object:被转换为数据类型的对象。Align:如果为true,则向字段添加间隔,使其类似 C 的结构体。
Copy: 生成dtype对象的新副本,如果为flase,结果是内建数据类型对象的引用。
以下示例定义名为 student 的结构化数据类型,其中包含字符串字段name,整数字段age和浮点字段marks。 此dtype应用于ndarray对象。
#int8,int16,int32,int64 可替换为等价的字符串 'i1','i2','i4',以及其他。
import numpy as np
student = np.dtype([('name','U20'), ('age', 'i1'), ('marks', 'f4')])
stu_array = np.array([('张三', 21, 50),('李四', 18, 75)], dtype = student)
print(stu_array);
3.数组常用属性和方法
1.ndarray.shape:它返回一个包含数组维度的元组,它也可以用于调整数组大小。
2.ndarray.reshape() :它也是用来调整数组大小。与2.1的区别在于它返回一个调整shape后的数据结果,而原始数组本身没有改变。改变shape之后元素的个数不能改变,否则会报错。
3.ndarray.ndim:它返回数组的维数。范例代码如下所示:
import numpy as np
a = np.array([[1,2,3],[4,5,6]])
print(a.shape)
a.shape = (3,2)
print(a.shape)
b=a.reshape(2,3);
print(b)
print(b.ndim);#结果:2
4.创建数组
NumPy提供了灵活多样的构建数组的方式,empty函数创建指定形状和dtype的未初始化数组;zeros函数创建指定形状和dtype的零值数组;ones函数创建指定形状和dtype的一值数组;范例代码如下所示:
import numpy as np
empty_array=np.empty((3,2),dtype=np.int);
ones_array=np.ones((3,2),dtype=np.int);
zeros_array=np.zeros((3,2),dtype=np.int);
eye_array=np.eye(3,dtype=np.int);#第一个必须为整数
另外一个从普通python可迭代数据对象中转入数据的函数是numpy.asarray。它与numpy.array类似。调用形式如下:
numpy.asarray(a, dtype = None, order = None)
a:任意形式的输入参数,比如列表、列表的元组、元组、元组的元组、元组的列表
dtype:通常,输入数据的类型会应用到返回的ndarray
order:'C’为按行的 C 风格数组,'F’为按列的 Fortran 风格数组
【注意】从一维数组构建二维数组时注意元素个数对齐,否则构建为一维数组元组(列表)对象,采用二维索引时会报错。
5.作者答疑
如有疑问,敬请留言。