Python数据分析之Numpy初体验

简介: NumPy是一个用于科学计算的Python库,主要用于快速操作数组和矩阵。NumPy提供了许多实用的函数和方法,可以大大简化科学计算的代码。

前言

本文阅读需要您对python有一点基础,如果有不懂得概念,请善用搜索引擎。

导入

我们有多种导入方法

不过,我比较推荐的是:

import numpy as np

这样,我们就完成了导入工作

数组对象及其索引

我们引入两个数组

a = [1,2,3,4]
b = [2,3,4,5]

如果我们需要将a的元素相加,我们可以使用for语句

如果我们让a,b对应元素相加,也是需要for的帮助

不过比较麻烦,这时,我们就可用numpy了

如:

a = np.array([1,2,3,4])
a
>>>array([1, 2, 3, 4])
a+1
>>>array([2, 3, 4, 5])
b= np.array([2,3,4,5])
a+b
>>>array([3, 5, 7, 9])

显然,使用numpy将大大简化我们的工作,不过这对它来说只是小菜一碟。

数组产生

下来,我们将看下几个比较便利的产生数组的方法

比如生成全0数组:

a=np.zero(5)

>>>array([0., 0., 0., 0., 0.])

值得注意的是,中括号内元素,默认浮点数

当然,我们也可以指定一下:

a=(np.zero(5),dtype=int)

>>>array([0, 0, 0, 0, 0])

这样就生成的是整数了

此外,我们还可以使用astype进行类型转换

如:

a = a.astype("float")

这样就可以把数组a的元素转换为浮点数

此外,我们还可以这样生成数列:

左闭右开区间,和range的使用方式同理

a = np.arange(1,10)
a
>>>array([1.3, 2.3, 3.3, 4.3, 5.3, 6.3, 7.3, 8.3, 9.3])

当然,我们也可以生成随机数

np.random.rand(10)
>>>array([0.48273436, 0.00581325, 0.16110313, 0.52234425, 0.63905254, 0.42691122, 0.37196789, 0.57188523, 0.46437865, 0.43126664])
np.random.randint(1,20,10) 
#生成随机整数,从1-20中随机10个
>>>array([12,  6,  4,  3, 13, 19,  5,  4, 14, 16])

数组属性

这个暂时没有太大用处

等用得到的地方我们再来好好讲解

下来,我们简单提一下比较常用的吧:

查看类型:type(a)

查看数组中的数据类型:a.dtype

查看形状,会返回一个元组,每个元素代表这一维的元素数目:a.shape

查看数组元素个数:a.size

Ok,以上就是简单的属性查看方法

如果有需要我会再进行补充。

索引和切片

以下操作非常简单,我们只需类比一下列表即可

我不做过多讲解了,QAQ

a = np.array([0,1,2,3])
a[0]
>>>0
a[0] = 10
a
>>>10
a[1:3] #等价于a[-3,3]
>>>array([1,2])

下面介绍一下省略参数的用法

如:

a = array([1,2,3,4,5])
a[-2:]
>>>array([4,5])

这样,输出倒数第二个数字及以后的数字

a = array([1,2,3,4,5])
a[::2]
>>>array([1,3,5])

这样输出从头到尾的数字,不过间隔为2.

多维数组

我们一般使用下面这个方法生成多维数组:

a = np.array([[0,1,2,3],[10,11,12,13]])
a
>>>array([[ 0,  1,  2,  3],
       [10, 11, 12, 13]])

我们可以进行索引还有赋值:

a[1,3]
>>>13
a[1,3]=999
a[1,3]
>>>999
a
>>>array([[ 0,  1,  2,  3],
       [10, 11, 12, 999]])

1是行索引,3是列索引,中间用逗号隔开。事实上,Python会将它们看成一个元组(1,3),然后按照顺序对应。

当然,我们也可以进行整行整列的索引

a[1]
>>>array([ 0,  1,  2,  3])
a[:,1]
>>>array([ 1, 11])

下面,我们看一下切片操作吧

有了上述的知识基础,相信你也能够看懂了吧。

a = np.array([[0,1,2,3,4,5],[10,11,12,13,14,15],[20,21,22,23,24,25],[30,31,32,33,34,35],[40,41,42,43,44,45],[50,51,52,53,54,55]])
a
>>>array([[ 0,  1,  2,  3,  4,  5],
       [10, 11, 12, 13, 14, 15],
       [20, 21, 22, 23, 24, 25],
       [30, 31, 32, 33, 34, 35],
       [40, 41, 42, 43, 44, 45],
       [50, 51, 52, 53, 54, 55]])
a[0,3:5]
>>>array([3, 4])
a[4:,4:]
>>>array([[44, 45],
       [54, 55]])
a[2::2,::2]
>>>array([[20, 22, 24],
       [40, 42, 44]])

ok,是不是非常简单,赶快去试一试吧。

不知你会不会注意到一个现象

比如:

a = np.array([0,1,2,3,4])
b = a[2:4]
b
>>>[2 3]
b[0] = 10
a
>>>array([ 0,  1, 10,  3,  4])

显然,Python并没有为b分配新的空间来存储它的值,而是让b指向了a所分配的内存空间,因此,改变b会改变a的值

一定要注意这一点,因为它很容易忽略T-T,你还找不到原因。

okk,那我们怎么解决它捏?

这就要提到copy方法了

a = np.array([0,1,2,3,4])
b = a[2:4].copy()
b[0] = 10
a

ok,成功解决!

高级索引

除了以上所使用的索引,还有更高级的高级索引

如:

a = np.array([0,2,3,0,0,1,0,0,1,0],dtype = bool)
a
>>>array([False,  True,  True, False, False, True, False, False, True, False])

当然还可以这样:

a = np.array([[0,1,2,3,4,5],[10,11,12,13,14,15],[20,21,22,23,24,25],[30,31,32,33,34,35],[40,41,42,43,44,45],[50,51,52,53,54,55]])
a
>>>array([[ 0,  1,  2,  3,  4,  5],
       [10, 11, 12, 13, 14, 15],
       [20, 21, 22, 23, 24, 25],
       [30, 31, 32, 33, 34, 35],
       [40, 41, 42, 43, 44, 45],
       [50, 51, 52, 53, 54, 55]])
a[(0,1,2,3,4),(1,2,3,4,5)]
>>>array([ 1, 12, 23, 34, 45])

这样我们就可以得到对角线上的5个值了

以上两个例子仅仅为了给家人们一点思路

家人们也可以配合省略参数等用法,玩出更多新花样。

数组函数

最后,我们来看看数组应用比较多的几个函数吧

其实非常简单

如下:

a=([1,3,2,3,22822,4,2,2,4,2,99,4,4,44,444,222,44,])
np.sort(a)
>>>array([    1,     2,     2,     2,     2,     3,     3,     4,     4,  4,    4,    44,    44,    99,   222,   444, 22822])
#排序

np.sum(a)
>>>23706
#求和

np.max(a)
>>>22822
np.min(a)
>>>1
#最大最小

np.mean(a)
#均值
>>>1394.4705882352941

np.std(a) 
#标准差
>>>5358.042642142492

#协方差矩阵
np.cov(a)
>>>array(30502909.76470589)

ok,以上就是numpy的简单用法

感谢您的阅读!

目录
相关文章
|
7月前
|
机器学习/深度学习 数据挖掘 索引
Python数据分析(一)—— Numpy快速入门
Python数据分析(一)—— Numpy快速入门
|
1月前
|
数据采集 数据可视化 数据挖掘
Python数据分析:Pandas库实战指南
Python数据分析:Pandas库实战指南
|
7月前
|
数据挖掘 数据处理 索引
Python数据分析面试:NumPy基础与应用
【4月更文挑战第16天】了解并熟练运用NumPy是衡量Python数据分析能力的关键。本文探讨了面试中常遇到的NumPy问题,包括数组创建、属性、索引切片、数组运算、统计函数以及重塑和拼接,并提供了相关代码示例。同时强调了易错点,如混淆Python列表与NumPy数组、误解广播规则等,提醒在数据处理中注意性能和内存效率。掌握这些知识点将有助于提升数据分析面试表现和技能。
151 5
|
7月前
|
机器学习/深度学习 数据挖掘 计算机视觉
python数据分析工具SciPy
【4月更文挑战第15天】SciPy是Python的开源库,用于数学、科学和工程计算,基于NumPy扩展了优化、线性代数、积分、插值、特殊函数、信号处理、图像处理和常微分方程求解等功能。它包含优化、线性代数、积分、信号和图像处理等多个模块。通过SciPy,可以方便地执行各种科学计算任务。例如,计算高斯分布的PDF,需要结合NumPy使用。要安装SciPy,可以使用`pip install scipy`命令。这个库极大地丰富了Python在科学计算领域的应用。
58 1
|
7月前
|
机器学习/深度学习 数据可视化 数据挖掘
python数据分析工具StatsModels
【4月更文挑战第15天】`StatsModels`是Python的统计库,基于NumPy和SciPy,提供线性模型、广义线性模型、稳健回归、时间序列分析等多样功能。支持离散选择模型、方差分析和非参数统计,还包含图形和可视化工具。安装`StatsModels`可使用`pip install statsmodels`。示例展示了如何进行普通最小二乘回归并绘制回归线。该库适用于数据分析和预测建模。
117 1
|
7月前
|
算法 Serverless Python
《Numpy 简易速速上手小册》第8章:Numpy 和 SciPy 的交互(2024 最新版)
《Numpy 简易速速上手小册》第8章:Numpy 和 SciPy 的交互(2024 最新版)
132 0
|
机器学习/深度学习 存储 人工智能
你必须掌握的Python数据分析工具之Numpy
你必须掌握的Python数据分析工具之Numpy
|
数据挖掘 API 索引
python数据分析-NumPy学习(下)
python数据分析-NumPy学习
262 0
python数据分析-NumPy学习(下)
|
存储 机器学习/深度学习 数据可视化
python数据分析-NumPy学习(上)
python数据分析-NumPy学习
139 0
python数据分析-NumPy学习(上)
|
数据挖掘 索引 Python
python数据分析-NumPy学习(中)
python数据分析-NumPy学习
153 0
python数据分析-NumPy学习(中)