当前位置: 代码迷 >> 综合 >> python 数据分析-numpy
  详细解决方案

python 数据分析-numpy

热度:96   发布时间:2023-10-17 20:19:57.0

1. NumPy简介

NumPy ( Numerical Python) 是高性能科学计算和数据分析的基础包. 其部分功能如下:
ndarry: 一个具有矢量算术运算和复杂广播能力的快速且节省空间的多维数组.
用于对整数进行快速运算的标准数学函数
用于读写磁盘数据的工具以及用于操作内存映射文件的工具
线性代数,随机数生成以及傅立叶变换功能
用于集成由C, C++, Fortran 等语言编写的代码的工具

2. ndarry: 一种多维数组对象

(1) 创建ndarry

data1 = [6, 7.5, 8, 0 ,1]
arr1 = np.array(data1)
嵌套序列:
data2 = [[1, 2, 3, 4], [5, 6, 7, 8]]
arr2 = np.array(data2)
数组行和大小:
python 数据分析-numpy
数据类型:
python 数据分析-numpy
数组创建函数:
array                   将输入数据( 列表, 元组, 数组或其他序列类型) 转换为 ndarray. 要么推断出dtype, 要么显示指定dtype                             . 默认直接复制输入数据.
asarray               将输入转换为ndarray, 如果输入本身就是一个ndarray就不进行辅助
arange                类似于内置的range, 但返回的是一个ndarray而不是列表
ones, ones_like  根据指定的形状和dtype创建一个全1数组. Ones_like 以另一个数组为参数, 并根据其形状和dtype创                              建一个1数组
zeros, zeros_like     类似于ones和ones_like, 只不过产生的全是1数组
empty, empty_like   创建数组, 之分配内存空间但不填冲任何值
eye, identity             创建一个正方的NXN单位矩阵(对角线为1, 其余为0)

(2) ndarray 的数据类型

int8, uint8                 i1, u1                 有符号和无符号的8位(1个字节)整型
int16, uint16             i2, u2                  ............................16.. 2...................
int32, uint32             i4, u4                  ............................32...4...................
int64, uint64             i8, u8                  ............................64...8...................
float16                      f2                        半精度浮点数
float32                      f4或f                    标准的单精度浮点数, 与C的float兼容
float64                      f8或d                   标准的双精度浮点数.  与C的double和python的float对象兼容
float128                    f16或g                 扩展精度浮点数
complex64, complex128 c8, c16         分别用两个32位, 64位或者128位浮点数表示的复数
complex256              c32    
bool                           ?                         存储True和False值的布尔类型
object                         O                        python对象类型
string_                         S                       固定长度的字符串类型(每个字符1个字节).例如,要创建一个长度为10的字符串,                                                              应使用S10
unicode_                      U                      固定长度的unicode1类型( 字节数由平台决定). 跟字符串的定义方式一样(如                                                                   u10)
类型转换:
asType()

( 3 ) 数组和标量之间的运算

( 4 ) 基本的索引和切片

Numpy数组的索引是一个非常丰富的主题
       当将一个标量值赋值给一个切片时(如arr[5:8] = 12), 该值会自动传播到整个选区.
       数组切片是原始数组的视图, 这意味着数据不会被复制, 视图上的任何修改都会直接反映到源数组.

( 5 ) 数学和统计方法

sum                 对数组中全部或某轴向的元素求和.零长度的数组的sum为0
mean               算术平均数. 零长度的数组的mean为NaN
std, var            分别为标准差和方差,自由度可掉( 默认为n )
min, max          最大值和最小值
argmin, argmax  分别为最大和最小元素的索引
cumsum            所有元素的累计和
curpro的           所有元素的累计积

( 6 ) 用于布尔型数组的方法

       上面的方法中,布尔值会被强制转换为1和0.
any     测试数组中是否存在一个或多个True
all       监测数组中所有值是否都是True

( 7 ) 排序

sort            不带参数全排序, 也可将指定要排序的轴.
np.sort 返回的是数组的已排序副本, 而就地排序则会修改数组本身.

( 8 ) 唯一化以及其他的集合逻辑

np.unique, 用于找出数组中的唯一值并返回已排序的结果.
intersect1d(x, y)        计算x和y中的公共元素, 并返回有序结果
uniod1d(x, y)             计算x和y的并集, 并返回有序结果
in1d(x, y)                   得到一个表示 " 得x的元素是否包含于y" 的布型数组
setdiff1d(x, y)             集合的差, 集元素在x中不在y中
setor1d(x, y)              集合的对称差, 即存在于一个数组中但不同时存在于两个数组中的元组

( 9) 用于数组的文件输入输出

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

np.save('filename', arr) 如果文件路径末尾没有扩展名.npy, 则扩展名会被自动加上.
np.load('filePath')
np.savez('filename.npz', a= arr, b=arr) 将多个数组保存到一个压缩文件中, 将数组以关键字的形式传入
arch =  np.load('filename.npz')
arr = arch['a']

( 11 ) 存取文本文件

np.loadtxt('filepath', delimiter=',')
np.savetxt()

3. 线性代数

diag                         以一维数组的形式返回方阵的对角线(或非对角线) 元素, 或将一维数组转换为方阵
dot                           矩阵乘法
trace                        计算对角线元素的和
det                           计算矩阵行列式
eig                           计算方阵的本征值和本征向量
inv                           计算方阵的逆
pinv                         计算矩阵的Moore-Penrose伪逆
qr                            计算QR分解
svd                         计算奇异值分解 ( SVD )
solve                      解线性方程组Ax = b, 其中A为一个方阵
lstsq                       计算Ax = b 的最小二乘解

4. 随机数生成

seed                   确定随机数生成器的种子
permutation        返回一个序列的随机排列或返回一个随机排列的范围
shuffle                对一个序列就地随机排序
rand                    产生均匀分布的样本值
randint               从给定的上下限范围内随机选取整数
randn                  产生政态分布 ( 平均值为0,标准差为1 ) 的样本值, 类似于MATLAB 接口
binomial             产生二项分布的样本值
normal                产生正态( 高斯 ) 分布的样本值
beta                   产生Beta 分布的样本值
chisquare            产生卡方分布的样本值
gamma              产生Gamma分布的样本值
uniform                产生在[0, 1) 中均匀分布的样本值