Python学习之Numpy速成记——基础篇(上)

                                                                               作者丨琳儿

                                                        来源丨医数思维云课堂(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的内容就讲到这里,期待我们的再次相约。

你可能感兴趣的:(Python学习之Numpy速成记——基础篇(上))