美文网首页
Python学习之Numpy速成记——基础篇(上)

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

作者: bffbb3a8a646 | 来源:发表于2019-04-16 12:06 被阅读0次

                                                                                   作者丨琳儿

                                                            来源丨医数思维云课堂(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速成记——基础篇(上)

          本文链接:https://www.haomeiwen.com/subject/lbzvwqtx.html