NumPy 快速入门:数组对象,数组属性,花式索引等基础介绍
1、NumPy 简介:
NumPy (Numerical Python的简称)是高性能科学计算和数据分析的基础包,是想利用 Python 进行数据分析人士必须了解的模块之一。
由于各种原因 NumPy 模块并不是 Python 的标准模块,故需安装使用:
pip install numpy
导入 NumPy 模块时通常约定写成:
import numpy as np
numpy 主要功能:
- 提供 ndarray 对象:具有矢量算数运算和复杂广播能力的多维数组;
- 提供了许多可对数组对象直接运算的标准数学函数,而无需编写循环;
- 提供了用于读写磁盘数据的工具及用于操作内存映射文件的工具;
- 提供了线性代数、随机生成及傅里叶变换功能;
- 用于集成由 C 、C++、Fortran 等语言编写的代码的工具。
2、ndarray 数组对象:
ndarray 是指 NumPy 中的N维数组对象,是一个快速而灵活地大数据集容器。
3、创建数组:
array 函数: 可接收一切序列对象(包括其他数组对象),然后产生一个新的 NumPy 数组。
numpy.array(object, dtype = None, copy = True, order = None, subok = False, ndmin = 0)
参数 | 含义 |
---|---|
object | 数组或嵌套的数列 |
dtype | 数组元素的数据类型,可选 |
copy | 对象是否需要复制,可选 |
order | 创建数组的样式,C为行方向,F为列方向,A为任意方向(默认) |
subok | 默认返回一个与基类类型一致的数组 |
ndmin | 指定生成数组的最小维度 |
简单示例:
import numpy as np # 导入模块,后面示例不再写
data = [6,7.5,8,0,1]
arr1 = np.array(data)
print(arr1) # [6. 7.5 8. 0. 1. ]
接收一个嵌套序列:
data2 = [[1,2,3,4],[5,6,7,8]]
arr2 = np.array(data2)
print(arr2)
'''
[[1 2 3 4]
[5 6 7 8]]
'''
解析: 除非设置数据类型(数据类型稍后会详细介绍),或者 array 函数会根据传入的序列选择适合的数据类型。
如,在上面 arr1 中,传入的列表中有 7.5 浮点数,所以创建的 arr1 数组类型为浮点型。
查看创建的数组数据类型:
print(arr1.dtype) # float64
print(arr2.dtype) # int32 或 int64 ,和安装的 Python 版本有关
其他创建数组的方法:
zeros 函数: 创建全 0 数组
# 创建一维数组
print(np.zeros(10)) # [0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
# 创建多维数组
print(np.zeros((3,6)))
'''
[[0. 0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0. 0.]]
'''
empty 函数:
print(np.empty((2,3,2)))
'''
[[[8.74e-322 0.00e+000]
[0.00e+000 0.00e+000]
[0.00e+000 0.00e+000]]
[[0.00e+000 0.00e+000]
[0.00e+000 0.00e+000]
[0.00e+000 0.00e+000]]]
'''
arange 函数: 是 Python 内置函数 range 的数组版
# arange 函数
print(np.arange(15))
# [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14]
eye 函数: 创建一个单位矩阵
print(np.eye(3,3))
'''
[[1. 0. 0.]
[0. 1. 0.]
[0. 0. 1.]]
'''
4、数组的数据类型:
NumPy 的一个数组对象里所有的数据都是同质的,即数组内 数据类型一致 。
设置、查看数组对象数据类型:
arr3 = np.array([1,2,3],dtype=np.float)
arr4 = np.array([1,2,3],dtype=np.int)
print(arr3.dtype,arr4.dtype)
# 打印结果
# float64 int32
转换数组数据类型:
arr5 = np.array([1,2,3,4,5])
print(arr5.dtype) # int32
float_arr5 = arr5.astype(np.float)
print(float_arr5.dtype) # float64
注:astype 会创建一个新的数组对象
自定义数据类型:
NumPy 也提供了自定义数组对象的数据类型方法。自定义数据类型是一种异构数据类型,可以当做记录一行数据的结构。
如:创建一个存储商店库存信息的数据类型,该库存信息有:商品名称、库存数量、商品价格。
# 创建数据类型
my_type = np.dtype([('name'