数据分析之NumPy

一:NumPy的介绍

  NumPy是用于科学计算的一个开源Python扩充程序库,它为Python提供了高性能的数组与矩阵运算处理能力,NumPy为Python带来了真正的多位数组功能,并且提供了丰富的函数库处理这些数组。常用的数学函数都支持向量化运算,使得这些数学函数能够直接对数组进行操作,将本来需要在Python级别进行的循环放到C语言的运算,明显的提高了程序的运算速度。

  简单来说,NumPy是高性能科学计算和数据分析的基础包,它是pandas等其他各种工具的基础。

二:NumPy的基本使用

  安装方法:pip install numpy

  引用方式:import numpy as np

  NumPy的核心功能是“ndarray”(即n-dimensional array,多维数组)数据结构。

  特点:

    连续内存分配、向量化操作、布尔选择、分片(sliceability)

   NumPy的主要功能:

    ndarray,一个多位数组结构,高效且节省空间

    无需循环对数组数据进行运算

    读写磁盘数据的工具以及用于操作内存映射文件的工具

    线性代数、随机数生成和傅里叶变换功能

    用于继承C、C++等代码的工具

三:ndarray基本属性

  1:基本属性

  ndarray.ndmin数组轴的个数

  ndarray.shape数组的维度,这是一个指示数组在每个维度上大小的整数元祖。例如一个n排m列的矩阵,它的shape属性将是(2,3)

  ndarray.size数组个数的总个数,等于shape属性中元祖元素的乘积。

  ndarray.dtype一个用于描述数组中元素类型的对象,可以创造或指定dtype使用标准Python类型。另外NumPy提供它自己的数据类型。

  ndarray.itemsize数组中每个元素的字节大小,例如,一个元素类型为float64的数组,itemsize属性值为8(64/8),又如,一个元素类型为complex32的数组item属性为4(32/8)

  T :数组的转置(对高维度数组而言)

  dtype: 数组元素的数据类型

  size:数组元素的个数

  2:NumPy: ndarray 多维数组对象

  创建ndarray:

    array(): 将列表转换为数组,可选择显示指定dtype

    arange(): range 的NumPy版,支持浮点数

    linspace(): 类似arange(),第三个参数为数组长度

    zeros(): 根据指定形状和dtype创建全0数组

    ones(): 根据指定形状和dtype创建全1数组

    reshape(): 更改数组的维度

.ndim :维度 
.shape :各维度的尺度 (2,5) 
.size :元素的个数 10 
.dtype :元素的类型 dtype(‘int32’) 
.itemsize :每个元素的大小,以字节为单位 ,每个元素占4个字节 
ndarray数组的创建 
np.arange(n) ; 元素从0到n-1的ndarray类型 
np.ones(shape): 生成全1 
np.zeros((shape), ddtype = np.int32) : 生成int32型的全0 
np.full(shape, val): 生成全为val 
np.eye(n) : 生成单位矩阵

np.ones_like(a) : 按数组a的形状生成全1的数组 
np.zeros_like(a): 同理 
np.full_like (a, val) : 同理

np.linspace(1,10,4): 根据起止数据等间距地生成数组 
np.linspace(1,10,4, endpoint = False):endpoint 表示10是否作为生成的元素 
常用
.reshape(shape) : 不改变当前数组,依shape生成 
.resize(shape) : 改变当前数组,依shape生成 
.swapaxes(ax1, ax2) : 将两个维度调换 
.flatten() : 对数组进行降维,返回折叠后的一位数组
数组的维度变换
数据类型的转换 :a.astype(new_type) : eg, a.astype (np.float) 
数组向列表的转换: a.tolist() 
数组的类型变换
a = np.array ([9, 8, 7, 6, 5, ]) 
a[1:4:2] –> array([8, 6]) : a[起始编号:终止编号(不含): 步长]
一维数组切片
a = np.arange(24).reshape((2, 3, 4)) 
a[1, 2, 3] 表示 3个维度上的编号, 各个维度的编号用逗号分隔
多维数组索引
a [:,:,::2 ] 缺省时,表示从第0个元素开始,到最后一个元素 
多维数组切片
np.abs(a) np.fabs(a) : 取各元素的绝对值 
np.sqrt(a) : 计算各元素的平方根 
np.square(a): 计算各元素的平方 
np.log(a) np.log10(a) np.log2(a) : 计算各元素的自然对数、10、2为底的对数 
np.ceil(a) np.floor(a) : 计算各元素的ceiling 值, floor值(ceiling向上取整,floor向下取整) 
np.rint(a) : 各元素 四舍五入 
np.modf(a) : 将数组各元素的小数和整数部分以两个独立数组形式返回 
np.exp(a) : 计算各元素的指数值 
np.sign(a) : 计算各元素的符号值 1(+),0,-1(-) 
. 
np.maximum(a, b) np.fmax() : 比较(或者计算)元素级的最大值 
np.minimum(a, b) np.fmin() : 取最小值 
np.mod(a, b) : 元素级的模运算 
np.copysign(a, b) : 将b中各元素的符号赋值给数组a的对应元素
数组运算
sum(a, axis = None) : 依给定轴axis计算数组a相关元素之和,axis为整数或者元组 
mean(a, axis = None) : 同理,计算平均值 
average(a, axis =None, weights=None) : 依给定轴axis计算数组a相关元素的加权平均值 
std(a, axis = None) :同理,计算标准差 
var(a, axis = None): 计算方差 
eg: np.mean(a, axis =1) : 对数组a的第二维度的数据进行求平均 
a = np.arange(15).reshape(3, 5) 
np.average(a, axis =0, weights =[10, 5, 1]) : 对a第一各维度加权求平均,weights中为权重,注意要和a的第一维匹配

min(a) max(a) : 计算数组a的最小值和最大值 
argmin(a) argmax(a) : 计算数组a的最小、最大值的下标(注:是一维的下标) 
unravel_index(index, shape) : 根据shape将一维下标index转成多维下标 
ptp(a) : 计算数组a最大值和最小值的差 
median(a) : 计算数组a中元素的中位数(中值)
NumPy统计函数

详细方法链接:http://www.cnblogs.com/TensorSense/p/6795995.html

四:Anaconda的安装及使用

  1:anaconda是什么?

  anaconda是Python的包管理器和环境管理器。

  2:为什么用anaconda?

  anaconda附带了一大批常用数据科学包,附带了conda、Python和150多个科学包及其依赖项。提供包管理功能,使得Windows平台安装第三方包经常失败的场景得以解决。提供环境管理功能,解决多版本Python并存、切换的问题。

  3:安装

  官网下载安装包:官网地址https://www.anaconda.com/download/

  值得注意的是anaconda没有快捷方式(pip3 install IPython,更加方便运行)

tips:什么是Jupyter Notebook?

  前身是IPython notebook,是一个开源的web application,可以创建和分享包含代码,视图,注释的文档,也可以用于数据统计,分析,建模,机器学习等领域。

         

原文地址:https://www.cnblogs.com/liuxiaolu/p/10894335.html