Python之Numpy

**

数据分析之Numpy

**
一、Numpy简介
NumPy(Numerical Python)是高性能计算数据分析的基础包。基本功能如下:
1)ndarray,快速和节省空间的多维数组,提供数组化的算术运算和高级的广播功能。
2)使用标准数学函数对整个数组的数据进行快速运算,而不需要编写循环。
3)用于读写磁盘数据的工具以及用于操作内存映射文件的工具。
4)线性代数、随机数生成及傅里叶变换功能。
5)用于集成由C、C++、Fortran等语言编写的代码工具。

对于数据分析应用而言,主要关注
1)用于数据整理和清理、子集构造和过滤、转换等快速的矢量化数组运算。
2)常用的数组算法,如排序、归一化、集合运算等。
3)高效的描述统计和数据聚合\摘要运算。
4)用于异构数据的合并\连接运算的数据对齐和关系型数据库运算。
5)将条件逻辑表述为数组表达式(而非if-elif-else分支的循环)。
6)数据分组运算(聚合、转换、函数应用等)。

二、关键缩写和包导入
缩写:
a:任意的Numpy ndarray对象
导入:import numpy as np

三、常用属性
a.ndim:维度
a.shape:各维度的尺度(2,5)
a.size:元素个数10
a.dtype:元素的类型dtype(’int32’)
a.itemsize:每个元素的大小,以字节为单位,每个元素占4个字节

四、ndarray数组的创建

NumPy的一个关键特性是它的N维数组对象(ndarray),它在Python中是一个大型数据集的快速的,灵活的容器。 数组使你能够在整个数据块上进行数学运算,且与对应的纯量元素间操作有相似的语法。

ndarray是一个同种类数据的多维容器,也就是说,它的所有元素都是同类型的。每一个数组都有一个 shape(表示它每一维大小的元组)和 dtype (一个描述数组数据类型的对象)。

1.array函数
接收一切序列型的对象(包括其他数组),然后产生一个新的含有传入数据的NumPy数组。嵌套序列(比如由一组等长列表组成的列表)将会被转化为一个多维数组。

data1 = [6, 7.5, 8, 0, 1]
arr1 = np.array(data1)

data2 = [[1, 2, 3, 4], [5, 6, 7, 8]]
arr2 = np.array(data2)

np.asarray 将输入转换为ndarray,如果输入本身就是一个ndarray仅不进行复制

2.便捷方式创建
np.arange(n) 元素从0到n-1的ndarrary类型
np.ones((3,6))
np.zeros((shape), ddtype = np.int32)
np.full((shape), val) 生成全为val
np.eye(n),np.identity(n) 生成单位矩阵(对角线为1,其余为0)
np.empty((shape)) 可以创建一个没有任何具体值的数组

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是否作为生成的元素

五、NumPy的数据类型

这里写图片描述
这里写图片描述

数组的类型转换:
1.数据类型的转换
a.astype(new_type)
eg, a.astype (np.float64)
注意:调用astype无论如何都会创建一个新的数组(原始数据的)

2.数组向列表的转换
a.tolist()

六、数组的维度变换
a.reshape(shape):不改变当前数组,依shape生成
a.resize(shape):改变当前数组,依shape生成
这里写图片描述
a.swapaxes(ax1,ax2):将两个维度调换
a.flatten(): 对数组进行降维,返回折叠后的一维数组

七、数组的索引和切片

1.一维数组的切片
a = np.array([1:4:2]): a[起始编号:终止编号(不含): 步长]

2.多维数组切片
a [:,:,:: 2 ] 缺省时,表示从第0个元素开始,到最后一个元素
a[:2, 1:]

注意:数组切片是原始数组的视图,意味着数据不会被复制,视图上的任何修改都会直接反映到原数组上。

3.多维数组索引
a = np.arange(24).reshape((2, 3, 4))
a[1][2][3] 或者
a[1, 2, 3] 表示 3个维度上的编号, 各个维度的编号用逗号分隔

八、数组的运算

一元ufunc
这里写图片描述
这里写图片描述

二元ufunc
这里写图片描述

九、数组转置和轴对换:
1)属性T:arr.T
2)transpose方法:需要得到一个由轴编号组成的元组才能对这些轴进行转置(麻烦)
3)swapaxes(ax1, ax2)方法
arr.swapaxes(1,2)

十、Numpy随机函数
form random import normalvariate
numpy.random.normal(size = (4, 4))
numpy.random.normal(size = 10000)

numpy.random函数
这里写图片描述
这里写图片描述

十一、Numpy的统计函数
这里写图片描述

十二、数组的集合运算
np.unique(arr)

这里写图片描述

十三、用于数组的文件输入输出
Numpy能够读写磁盘上的文本数据或二进制数据。

1)将数组以二进制格式保存到磁盘

np.save(‘some_array’, arr)
如果文件路径末尾没有扩展名.npy,则扩展名会自动加上
np.load(‘some_array’) 读取磁盘上的数组
默认情况数组以未压缩的原始二进制格式保存在扩展名为.npy的文件中。

np.savez可将多个数组保存到一个压缩文件中,将数组以关键字参数的形式传入即可。
np.savez(‘array_archive.npz’, a = arr1, b = arr2)
arch = np.load(‘array_archive.npz’)
arch[‘b’]

十四、存取文本文件
1.将文件加载到一个二维数组中:np.loadtxt, genfromtxt
注意:genfromtxt与loadtxt差不多,不过它面向结构化数组和缺失数据处理。

arr = np.loadtxt(‘array_ex.txt’, delimiter = ‘,’)

2.将数组写到以某种分隔符分开的文本文件中:np.savetxt

十五、线性代数
numpy.linalg中有一组标准的矩阵分解运算及求逆和行列式之类的东西。

from numpy.linalg import inv, qr

常用的numpy.linalg函数
这里写图片描述

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值