Python NumPy用法介绍


Python NumPy用法介绍文章插图
原文:
Python NumPy用法介绍文章插图
介绍NumPy是Python数值计算最重要的基础包 , 大多数提供科学计算的包都是用NumPy的数组作为构建基础 。 NumPy本身并没有提供多么高级的数据分析功能 , 理解NumPy数组以及面向数组的计算 , 将有助于你更加高效地使用诸如Pandas之类的工具 。 虽然NumPy提供了通用的数值数据处理的计算基础 , 但大多数读者可能还是想将Pandas作为统计和分析工作的基础 , 尤其是处理表格数据时 。
NumPy的部分功能如下:

  • ndarray , 一个具有矢量算术运算和复杂广播能力的快速且节省空间的多维数组 。
  • 用于对整组数据进行快速运算的标准数学函数(无需编写循环) 。
  • 用于读写磁盘数据的工具以及用于操作内存映射文件的工具 。
  • 线性代数、随机数生成以及傅里叶变换功能 。
  • 用于集成由C、C++、Fortran等语言编写的代码的A C API 。
NumPy之于数值计算特别重要是因为它可以高效处理大数组的数据 。 这是因为:
  • 比起Python的内置序列 , NumPy数组使用的内存更少 。
  • NumPy可以在整个数组上执行复杂的计算 , 而不需要Python的for循环 。
使用下面格式约定 , 引入NumPy包:
import numpy as npNumPy的ndarray:N维数组对象【Python NumPy用法介绍】NumPy最重要的是其N维数组对象(即ndarray) , 其中的所有元素必须是相同类型的 。 该对象是一个快速而灵活的大数据集容器 , 可以利用这种数组对整块数据执行数学运算 , 其语法跟标量元素之间的运算一样 。
创建ndarray
  • 使用np.array(list/tuple, dtype=np.float32)函数 , 产生一个新的含有传入数据的ndarray对象 。
第一个参数为元组、列表(相同数据类型) , 第二个参数为ndarray数组中的数据类型 。 当第二个参数为空时 , NumPy将根据数据情况指定一个类型 。
返回值为形式 , 元素间由空格分割 。
In [20]: arr1 = np.array([6, 7.5, 8, 0, 1]) #从列表创建In [21]: pring(arr1)Out[21]: [ 6. , 7.5, 8. , 0. , 1. ] #NumPy根据数据情况 , 指定了float类型In [23]: arr2 = np.array([[1, 2, 3, 4], [5, 6, 7, 8],(1.2 , 2.3)])In [24]: pring(arr2)Out[24]: [[1, 2, 3, 4] [5, 6, 7, 8] (1.2 , 2.3)]
  • 使用NumPy中的内置函数
np.arange(begin,end,step,dtype=np.float32):begin为元素起始值(包含) , end为元素结束值(不包含) , step为步长(默认值为1) , dtype为元素类型 。 如果只有一个参数n , 则为从0到n-1;如有有两个参数n和m , 则为从n到m-1;
np.linspace(begin,end,number):创建包含number个元素的数组 , 并在指定的开始值(包含)和结束值(包含)之间平均间隔;
np.ones(shape):根据shape生成一个全1数组 , shape是元组类型 , 比如(2,3);
np.zeros(shape):根据shape生成一个全0数组 , shape是元组类型 , 比如(2,3,4);
np.full(shape,val):根据shape生成一个数组 , 每个元素值都是val;
np.eye(n):创建一个正方的n*n单位矩阵 , 对角线为1 , 其余为0;
np.ones_like(a):根据数组a的形状生成一个全1数组;
np.zeros_like(a):根据数组a的形状生成一个全0数组;
np.full_like(a,val):根据数组a的形状生成一个每个元素值都是val的数组;
np.concatenate 将两个或多个数组合并成一个新的数组 。
In [30]: arr3 = np.zeros((3, 6))In [31]: print(arr3)Out[30]: [[ 0., 0., 0., 0., 0., 0.] [ 0., 0., 0., 0., 0., 0.] [ 0., 0., 0., 0., 0., 0.]]
  • 从磁盘读取数据创建ndarray数组 , 将ndarray数组保存到磁盘(大部分情况会使用pandas或其它工具加载文本或表格数据)
    np.load(fname)? fname : 文件名 , 以.npy为扩展名 , 压缩扩展名为.npz
    np.save(fname, array) 或 np.savez(fname, array)
    ? fname : 文件名 , 以.npy为扩展名 , 压缩扩展名为.npz
    ? array : 数组变量
ndarray数组对象的属性
  • .ndim:秩 , 即轴的数量或维度的数量
  • .shape:ndarray对象的尺度 , 对于矩阵 , n行m列
  • .size:ndarray对象元素的个数 , 相当于.shape中n*m的值
  • .dtype:ndarray对象的元素类型
  • .itemsize:ndarray对象中每个元素的大小 , 以字节为单位
ndarray数组对象的类型和维度变换