Python数据分析(一)—— Numpy快速入门(上)

简介: Python数据分析(一)—— Numpy快速入门

NumPy(Numerical Python)是Python科学计算的基础包,极大地简化了向量和矩阵的操作处理。

1 创建Numpy对象


Numpy最重要的就是其N NN维数组对象ndarray,它是一个通用的同构数据多维容器,其中的所有元素必须是相同类型。每个数组都有一个shape(表示各维度大小)和一个dtype(表示数据数据类型)。


(1) np.array


使用 np.array创建 NumPy 数组,它接受一切序列型的对象,如python列表等。


e7df02fbed384e5cb3acc5a3895240af.png


嵌套序列(等长列表组成的列表)将会被转换为一个多维数组。


066f34e938fc4a2ca6d5554bd7bbc68f.png


更多维度:


61e583ba57e64cd8ac0e28e82fc92334.png


import numpy as np
data1 = [1,2,3,4,5]
arr1 = np.array(data1)
data2 = [[1,2,3,4],[5,6,7,8]]
arr2 = np.array(data2)
print(data1)
print(data2)

(2)其他创建函数



arange:相当于内置的range,返回一个ndarray对象,常与reshape搭配产生给定形状数组。

ones:根据指定形状和dtype创建一个全1数组/ones_like以另一个数组为参数,根据其形状和dtype创建一个全1数组

zeros:与 ones产生全0数组

empty:创建新数组,只分配内存空间不填充任何值

eye/identify:创建一个N × N 单位矩阵

numpy.random对Python内置的random进行了补充,增加了一些用于高效生产多种概率分布的样本值的函数


random(size=None):产生[ 0 , 1 )上随机值

rand(d0, d1, ..., dn):产生[ 0 , 1 )上均匀分布的样本值

randint(low, high=None, size=None, dtype='l'):给定的上下限范围内随机选取整数

randn(d0, d1, ..., dn):产生正态分布(平均值为0,标准差为1)的样本值

binomial(n, p, size=None):产生二项分布的样本值

normal(loc=0.0, scale=1.0, size=None):产生正态(高斯)分布的样本值

beta(a, b, size=None):产生Beta分布的样本值

chisquare(df, size=None):产生卡方分布的样本值

gamma(shape, scale=1.0, size=None):产生Gamma分布的样本值

uniform(low=0.0, high=1.0, size=None):产生[ l o w , h i g h )上长均匀分布的样本值



bbd4193d1c7d41a3a302267e7ceb4c6a.png

4289d150743a4a5cb2423735e0cbe134.png


f88a22eaf0274c5dac88c22f77fca263.png


When you print a 3-dimensional NumPy array, the text output visualizes the array differently than shown here. NumPy’s order for printing n-dimensional arrays is that the last axis is looped over the fastest, while the first is the slowest.


np.arange(6)
np.arange(6).reshape(2,3)
np.ones((3,2))
np.zeros((3,2))
np.empty((3,2))
np.eye(5)
np.random.random((3,2))
np.random.rand(2,3)
np.random.randint(1,10,size=(2,3))
np.random.randn(2,3)
np.random.uniform(5,10,size=(2,3))

2 索引与切片


Numpy数组的索引和切片与Python列表功能差不多,跟列表的重要区别在于,数组切片是原始数组的试图,数据不会被复制,视图上的任何修改都会直接反应到源数组上。


(1)基本索引与切片


数组的索引与切片


ae11afe0709449ce82be690cc77a15d2.png


矩阵的索引与切片


96aec47074bc4d0c8ed9ce76058841bf.png


(2)布尔型索引


对于数组names,假设每个名字对应data数组的一行,选出名字为’Bob’的所有行:对names数组和字符串’Bob’的比较运算将会产生一个布尔型数组,这个数组可用于数组索引(该数组长度必须与被索引轴的长度一致)。

names = np.array(['Bob','Joe','Will','Will','Alice','Joe','Bob'])
names=='Bob'
names[names=='Bob']
names[names!='Bob']


(3) 花式索引


花式索引(Fancy indexing)是一个Numpy术语,指的是利用整数数组进行索引,以特定顺序选取行子集或列子集。

arr = np.arange(20).reshape(5,4)
arr[[2,0,3]]  #按顺序分别选取第2、0、3行
arr[:,[1,2]]  #按顺序分别选取第2、3列

3 数学运算


(1)数组运算


Numpy数组运算使得不用编写循环即可对数据执行批量运算,通常称为矢量化(Vectorization)


90c2615490584d2ea8f2c9840338a9fc.png


48bfb79f7641464fb9e33c1078cf0a4b.png



92c17d95d08f4bf8a74d692443dda3cc.png


不同大小数组之间的运算称为广播(broadcasting),如以下向量与标量直接的运算



c51c2f36c3334dcba5d63e4cea957e49.png


(2)矩阵运算


算数运算

e8351d7eca3c4785a490340949949f61.png

8349a3dfebc7437ea25c0629e15741b0.png


点积运算



ec91a795d8f24d3284fd275a749d3671.png



计算过程如下:


231246685e3f48d589b6fb6b01202e7f.png


numpy.linalg中有一组标准的矩阵分解、求逆和行列式的方法,与Matlab和R语言使用的是相同的行业标准级Fortran库,主要如下:


diag:以一维数组的形式返回方阵对角线(或非对角线)元素,或将一维数组转换为方阵(非对角线元素为0)

dot:矩阵乘法

trace:对角线元素的和

det:矩阵行列式

eig:方阵的本征值和本征向量

inv:方阵的逆

pinv:矩阵的Moore-Penrose伪逆

qr:QR分解

svd:SVD分解

solve:解线性方程组A x = b ,A 为方阵

lstsq:A x = b 的最小二乘解

相关文章
|
9天前
|
人工智能 数据可视化 数据挖掘
【python】Python航空公司客户价值数据分析(代码+论文)【独一无二】
【python】Python航空公司客户价值数据分析(代码+论文)【独一无二】
|
6天前
|
数据采集 数据可视化 数据挖掘
深入浅出:使用Python进行数据分析
在这篇文章中,我们将探索Python在数据分析中的应用,介绍几个关键的库,如Pandas、NumPy、Matplotlib,以及如何使用它们进行有效的数据处理和可视化。本文旨在为初学者提供一个清晰、简洁的指南,让读者能够快速掌握使用Python进行数据分析的基本技能,并通过一个实例加深理解。不同于其他文章的冗长解释和复杂示例,我们将以最直接、易懂的方式,让你迅速上手,即使是完全没有编程背景的读者也能轻松跟上。
|
1天前
|
机器学习/深度学习 数据采集 数据挖掘
Python 的科学计算和数据分析: 解释什么是数据规整(Data Wrangling)?
数据规整是将原始数据转化为适合分析和建模的格式的关键步骤,涉及缺失值处理(删除、填充、插值)、异常值检测与处理、数据类型转换、重采样、数据合并、特征选择和特征变换等任务。这些预处理步骤确保数据质量和准确性,为后续的数据分析和机器学习模型构建奠定基础。
12 4
|
4天前
|
机器学习/深度学习 数据可视化 数据挖掘
用Python进行健康数据分析:挖掘医疗统计中的信息
【4月更文挑战第12天】Python在医疗健康数据分析中扮演重要角色,具备数据处理、机器学习、可视化及丰富生态的优势。基本流程包括数据获取、预处理、探索、模型选择与训练、评估优化及结果可视化。应用案例包括疾病预测、药物效果分析和医疗资源优化,例如使用RandomForestClassifier进行疾病预测,Logit模型分析药物效果,以及linprog优化医疗资源配置。
|
9天前
|
机器学习/深度学习 数据可视化 算法
【python】Python大豆特征数据分析 [机器学习版一](代码+论文)【独一无二】
【python】Python大豆特征数据分析 [机器学习版一](代码+论文)【独一无二】
|
9天前
|
机器学习/深度学习 数据可视化 数据挖掘
【python】双十一美妆数据分析可视化 [聚类分析/线性回归/支持向量机](代码+报告)【独一无二】
【python】双十一美妆数据分析可视化 [聚类分析/线性回归/支持向量机](代码+报告)【独一无二】
|
9天前
|
机器学习/深度学习 数据可视化 数据挖掘
利用Python进行数据分析与可视化:从入门到精通
本文将介绍如何使用Python语言进行数据分析与可视化,从基础概念到高级技巧一应俱全。通过学习本文,读者将掌握Python在数据处理、分析和可视化方面的核心技能,为实际项目应用打下坚实基础。
|
26天前
|
机器学习/深度学习 存储 算法
Python中的NumPy库:数值计算与科学计算的基石
【2月更文挑战第29天】NumPy是Python科学计算的核心库,专注于高效处理大型多维数组和矩阵。其核心是ndarray对象,提供快速数组操作和数学运算,支持线性代数、随机数生成等功能。NumPy广泛应用于数据处理、科学计算和机器学习,简化了矩阵运算、统计分析和算法实现,是数据科学和AI领域的重要工具。
|
28天前
|
存储 索引 Python
请解释Python中的NumPy库以及它的主要用途。
【2月更文挑战第27天】【2月更文挑战第97篇】请解释Python中的NumPy库以及它的主要用途。
|
1月前
|
机器学习/深度学习 数据挖掘 索引
Python数据分析(一)—— Numpy快速入门
Python数据分析(一)—— Numpy快速入门