作者丨琳儿
来源丨医数思维云课堂(ID:Datamedi)
01 基本功能
快速高效的多维数组对象ndarray。
用于对数组执行元素级计算以及直接对数组执行数学运算的函数
用于读写硬盘上基于数组的数据集的工具
线性代数运算、傅里叶变换,以及随机数生成
用于将C、C++、Fortran代码集成到Python的工具
除了为Python提供快速的数组处理能力,NumPy在数据分析方面还有另外一个主要作用,即作为在算法之间传递数据的容器。
标准Python的列表(list)中,元素本质是对象。如:L = [1, 2, 3],需要3个指针和三个整数对象,对于数值运算比较浪费内存和CPU。
因此,Numpy提供了ndarray(N-dimensional array object)对象:存储单一数据类型的多维数组。
02 基础知识
1.NumPy 数组
(1) 使用NumPy中的arange()函数来创建包含0~n 的整数的NumPy数组。
代码中的arange函数前面有一个前缀numpy,表明该函数是从NumPy模块导入的。
test_1=np.arange(5)
print(test_1)
(2) NumPy数组的下标从0开始的。使用dtype()获得数据类型
print(test_1.dtype)
(3) 数组的shape属性返回一个元组(tuple),元组中的元素即为NumPy数组每一个维度上的大小。上面例子中的数组是一维的,因此元组中只有一个元素。
print(test_1.shape)
(4) 创建指定长度的全0数组(zeros),全1数组(ones),没有任何具体数值的数组(empty),创建单位矩阵eye()
print(np.zeros(3))
print(np.ones([2,3]))
print(np.empty([3,3],dtype=int))
print(np.eye(3,3))
参数:
shape : 整数或者整型元组定义返回数组的形状;
dtype : 数据类型,可选定义返回数组的类型。
order : {'C', 'F'}, 可选规定返回数组元素在内存的存储顺序:C(C语言)-rowmajor;F(Fortran)column-major。
2.创建多维数组
(1)创建一个多维数组; 显示该数组的维度。
arange函数创建的数组作为列表元素,把这个列表作为参数传给array()函数,从而创建了一个2×2的数组。
test_2=np.array([np.arange(2), np.arange(2)])
print(test_2)
print(test_2.shape)
(2)选取数组元素:对于数组a,只需要用a[m,n]选取各数组元素,其中m和n为元素下标,对应的位置如下表所示。
a=np.array([[1,2], [3,4]])
print(a)
print(a[0,0])
print(a[0,1])
3.NumPy 数据类型
Python支持的数据类型有整型、浮点型以及复数型,但这些类型不足以满足科学计算的需求,因此NumPy添加了很多其他的数据类型。
在实际应用中,我们需要不同精度的数据类型,它们占用的内存空间也是不同的。
在NumPy中,大部分数据类型名是以数字结尾的,这个数字表示其在内存中占用的位数。下面的表格(整理自NumPy用户手册)列出了NumPy中支持的数据类型。
(1)每一种数据类型均有对应的类型转换函数:
float64(42)
int8(42.0)
bool(42)
bool(0)
bool(42.0)
float(False)
float(True)
print(np.float64(42))
print(np.int8(42.0))
print(bool(42))
(2)在NumPy中,许多函数的参数中可以指定数据类型,通常这个参数是可选的:
(3)复数是不能转换为整数的
np.complex(2,1)
np.int8(np.complex(2,1))
4.数据类型对象
(1)数据类型对象是numpy.dtype类的实例。如前所述,NumPy数组是有数据类的,更确切地说,NumPy数组中的每一个元素均为相同的数据类型。
数据类型对象可以给出单个数组元素在内存中占用的字节数,即dtype类的itemsize属性:a.dtype.itemsize。
(2)NumPy可以使用字符编码来表示数据类型,这是为了兼容NumPy的前身Numeric。
应该优先使用dtype对象来表示数据类型,而不是这些字符编码。
np.arange(7, dtype='f')
np.arange(7, dtype='D')
(3)完整的NumPy数据类型列表可以在sctypeDict.keys()中找到。
(4)获取数据类型的字符编码:
t = np.dtype('Float64')
t.char
(5)创建自定义数据类型:
自定义数据类型是一种异构数据类型,可以当做用来记录电子表格或数据库中一行数据的结构。
作为示例,我们将创建一个存储商店库存信息的数据类型。
其中,我们用一个长度为40个字符的字符串来记录商品名称,用一个32位的整数来记录商品的库存数量,最后用一个32位的单精度浮点数来记录商品价格。
下面是具体的步骤。
t = np.dtype([('name', np.str),('numitems', np.int32),('price',np.float32)])
print(t)
t['name']
Python学习之Numpy的内容就讲到这里,期待我们的再次相约。