我打算用三篇文章介绍NumPy。NumPy是Python的一个库,主要用于处理数组。数组在数据领域到底有多重要呢?数组可以看做数据的最基本储存形式,在数组的基础上,有数据框,数据库等。要自己编程开发数据科学,数组是必须学习的。目前在实际使用方面,二维数组(实际就是个矩阵)是最常用的。像图像识别、数组识别、验证码识别这些方面,常把图片中的像素点转换成矩阵;文本领域,把词语转换为二进制矩阵。在学术研究方面,几乎大部分统计学科需要使用矩阵。所以说不管一个人要从事与数据有关的哪个方面,都必须学习矩阵。
NumPy(读/nʌmpi/,类似“那么皮”)是目前Python最火热的一个高效储存和操作数据的接口。通过使用NumPy的数组,Python就会成为你手中的矩阵计算器,就像R和Matlab那样。在这方面,R和Matlab的语言比Python更贴近于数学语言,这是二者的优点,但是速度快、效率高则是NumPy的优势。
安装NumPy,可以直接安装Anaconda这个大包(建议这样安装),也可以直接pip,一般来说,import后不出现错误就说明安装成功了。像大多数论坛和社区的习惯那样,本文也用np作为别名导入NumPy:
import numpy as np
创建基本数组
python支持这些类型的数据:
为什么要特别注意数据类型呢?因为NumPy数组是固定类型的,如果你事先创建了一个整型数组,那么当你把一个非整型数字赋值给该数组时,这个非整型的数字将被强制转换为整型。
创建特殊数组
索引、切片、变形、组合、分割
索引
首先简单谈一谈Python中元素的编号。与C++等语言类似,Python数组中元素的初始编号也是0,而不是像R中的初始编号为1。比如[8,87,65,12]这个数组,在Python中第一个元素8的编号为0,第二个元素87的编号为1,以此类推。但是在R语言中,第一个元素8的编号则为1。这一点很重要,应避免弄混。
以上面的f与h两个数组做示例:
切片
python切片的语法是:
数组名[开始元素:终止元素:步长],切片得到的结果包括开始元素,但是不包括终止元素。
还是以f和h两数组做示例:
需要特别注意,NumPy数组的切片属于提取子数组,相当于局部放大,并不是创建了一个副本。所以在修改NumPy数组的切片时,原始数组也会改变。如果不想这样,可以对原始数组使用.copy()方法,创建一个副本。
变形
利用.reshape(())函数修改某一数组的行列数:
组合
利用concatenate函数实现多个数组之间的拼接:
分割
与组合对应的就是分割。
有点累啊!
后面的下次再写。
领取专属 10元无门槛券
私享最新 技术干货