Data Science | Numpy基础(二)

简介: Data Science | Numpy基础(二)

Anaconda的基本用法

按照上篇文章,相信大家都安装好了Anaconda,有朋友在留言区留言希望出一篇关于Anaconda的使用教程,其实Anaconda的基本使用非常简单,基本无需教程。

在windows下安装好Anaconda后,在所有程序中可以看到Anaconda下有以下几个组件:

  • Anaconda Navigator:用于管理工具包和环境的图形界面。
  • Anaconda Prompt:用于管理包和环境的命令行界面。
  • Jupyter Note book:基于Web的交互式计算环境,用于展示数据分析的过程,并且生成容易阅读的文档。
  • Spyder:Python集成开发环境,布局类似于Matlab。

我们学习主要使用的是第三个Jupyter Note book。

这里简单普及一下常用的Anaconda命令(虽然我也不经常用)。

  • 查看软件版本号
python --version #查看Python版本
conda --version #查看conda的版
  • 添加镜像
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
  • 更新conda
conda upgrade --all
  • 查看已经安装的packages
conda list
conda install [package name] #安装package,安装在默认的Python环境中

新手入门建议只安装Anaconda,可以省去很多不必要的麻烦,以上就是Anaconda的基本使用,欢迎大家在留言区补充。

Numpy索引及切片

纠正下上一篇的错误:

# 正确的导入方式
import numpy as np

numpy的索引方式和Python中的列表索引相似,这里主要介绍普通数组索引/切片和布尔型数组的索引/切片。

一维数组的索引/切片

一维数组的索引和切片和Python中的列表相同,索引都是从0开始,切片都是左闭右开。

import numpy as np
ar = np.arange(20)
# 输出ar的第4个值
print(ar[3])
# 输出ar的前四个值
print(ar[:4])
>>>
4
[0 1 2 3]
多维数组的索引/切片

二维数组可以理解为两个一维数组横向堆叠在一起,所只要分别取对应索引即可。

import numpy as np
ar = np.arange(16).reshape(4,4)
# 二维数组索引遵照先行后列(有以下两种写法)
# 选取第二行第二列的值
print(ar[2][2])
print(ar[2,2])
# 二维数组切片
# 取出前两行的值
print(ar[:2])
# 取出前两行后两列的值
print(ar[:2,2:])
>>>
[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]
 [12 13 14 15]]
10
10
[[0 1 2 3]
 [4 5 6 7]]
[[2 3]
 [6 7]]

三位数组的索引、切片的取值方式相当与二维数组的进化版。

import numpy as np
ar = np.arange(12).reshape(3,2,2)
print(ar)
# 三维数组索引遵照先维度后行再列
print(ar[2][0][1])
print(ar[2,0,1])
# 切片
# 获取第一个数组的第一行的第一列的数
print(ar[:1,:1,:1])
>>>
[[[ 0  1]
  [ 2  3]]
 [[ 4  5]
  [ 6  7]]
 [[ 8  9]
  [10 11]]]
[[[0]]]
9
9
布尔型的索引及切片

布尔型数组的使用是本片文章的重点。

# 简单展示一下布尔型的一维数组长啥样
i = np.array([True,False,True])
j = np.array([True,True,False,False])
print(i)
print(j)
>>>
[ True False  True]
[ True  True False False]

而我们经常见到的是这样的:

ar = np.arange(12).reshape(3,4)
print(ar)
print(ar>5)
>>>
[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]
 [[False False False False]
 [False False  True  True]
 [ True  True  True  True]]

当我们需要筛选出ar中大于3的值,就可以使用布尔值进行筛选,如下:

ar = np.arange(12).reshape(3,4)
print(ar[ar>3])
>>>
[ 4  5  6  7  8  9 10 11]
Numpy随机数
均匀分布和正态分布

以均匀分布和正态分布的方式生成随机数

# numpy.random.rand() 生成一个0-1的随机浮点数或N维浮点数 --均匀分布
a = np.random.rand()
b = np.random.rand(4,4)
print(a)
print(b)
>>>
0.5544023939180306
[[0.46387648 0.97345876 0.12059175 0.7565951 ]
 [0.30192996 0.76633208 0.20107761 0.09315875]
 [0.79347118 0.26714404 0.08628158 0.72510313]
 [0.06606087 0.93260038 0.90268201 0.90941348]]

以正太分布的方式生成随机数

# numpy.random.randn() 生成一个0-1的随机浮点数或N维浮点数 --正态分布
a = np.random.randn()
b = np.random.randn(4,4)
print(a)
print(b)
>>>
0.26901442604096687
[[ 0.40261375 -0.23541184  0.96607489 -1.11253043]
 [-0.31670703  0.05841136 -0.01862511  1.72597729]
 [ 0.17052799  1.03537825 -0.94375417  1.32484928]
 [ 0.132761    0.44950533  0.44131534 -0.11319535]]

按照上面的写法相信大家对与.randn()和.rand()的认识还不够清晰,这里用可视化的方式展示一下:

#平均分布
# numpy.random.rand() 生成一个0-1的随机浮点数或N维浮点数 --均匀分布
data1 = np.random.rand(500)
data2 = np.random.rand(500)
#正态分布
# numpy.random.randn() 生成一个浮点数或N维浮点数  --正态分布
data3 = np.random.randn(500)
data4 = np.random.randn(500)
import matplotlib.pyplot as plt
% matplotlib inline
plt.scatter(data1,data2)
plt.scatter(data3,data4)

这是随机分布的图样:

plt.scatter(data1,data2)

这是正态分布的图样:

plt.scatter(data3,data4)

可以看到正态分布和随机分布的成像还是有较大不同的,当然这里只是加深大家对.randn()和.rand()的认识,可视化在之后会进一步学习。

Numpy随机数的其他用法
#随机整数
print(np.random.randint(2))
#在2-10之间生成随机整数
print((np.random.randint(2,10)))
# 在0-10之间生成10个整数
print((np.random.randint(10,size=10)))
# 在0-10之间生成包含10个元素的二维数组
print(np.random.randint(10,size=(2,5)))
# 在10-50之间生成包含10个元素的二维数组
print(np.random.randint(10,50,size=(2,5)))

作业

  1. 创建2个包含10个元素的正太分布一维数组
  2. 请按照要求创建数组ar,再将ar[:2,:2]的值改为[0,1)的随机数
  3. 按照要求创建数组,通过索引,其ar[4]、ar[:2,3:]、ar[3][2]分别是多少
  4. 按照要求创建数组,筛选出元素值大于5的值并生成新的数组

相关文章
|
vr&ar Python
Data Science | Numpy基础(一)
Data Science | Numpy基础(一)
250 0
Data Science | Numpy基础(一)
|
存储 Python
​Data Science | 福利列表 | Numpy基础(三)
​Data Science | 福利列表 | Numpy基础(三)
177 0
|
1月前
|
存储 Java 数据处理
(numpy)Python做数据处理必备框架!(一):认识numpy;从概念层面开始学习ndarray数组:形状、数组转置、数值范围、矩阵...
Numpy是什么? numpy是Python中科学计算的基础包。 它是一个Python库,提供多维数组对象、各种派生对象(例如掩码数组和矩阵)以及用于对数组进行快速操作的各种方法,包括数学、逻辑、形状操作、排序、选择、I/0 、离散傅里叶变换、基本线性代数、基本统计运算、随机模拟等等。 Numpy能做什么? numpy的部分功能如下: ndarray,一个具有矢量算术运算和复杂广播能力的快速且节省空间的多维数组 用于对整组数据进行快速运算的标准数学函数(无需编写循环)。 用于读写磁盘数据的工具以及用于操作内存映射文件的工具。 线性代数、随机数生成以及傅里叶变换功能。 用于集成由C、C++
292 0
|
1月前
|
Java 数据处理 索引
(numpy)Python做数据处理必备框架!(二):ndarray切片的使用与运算;常见的ndarray函数:平方根、正余弦、自然对数、指数、幂等运算;统计函数:方差、均值、极差;比较函数...
ndarray切片 索引从0开始 索引/切片类型 描述/用法 基本索引 通过整数索引直接访问元素。 行/列切片 使用冒号:切片语法选择行或列的子集 连续切片 从起始索引到结束索引按步长切片 使用slice函数 通过slice(start,stop,strp)定义切片规则 布尔索引 通过布尔条件筛选满足条件的元素。支持逻辑运算符 &、|。
140 0
|
3月前
|
机器学习/深度学习 API 异构计算
JAX快速上手:从NumPy到GPU加速的Python高性能计算库入门教程
JAX是Google开发的高性能数值计算库,旨在解决NumPy在现代计算需求下的局限性。它不仅兼容NumPy的API,还引入了自动微分、GPU/TPU加速和即时编译(JIT)等关键功能,显著提升了计算效率。JAX适用于机器学习、科学模拟等需要大规模计算和梯度优化的场景,为Python在高性能计算领域开辟了新路径。
346 0
JAX快速上手:从NumPy到GPU加速的Python高性能计算库入门教程
|
3月前
|
存储 数据采集 数据处理
Pandas与NumPy:Python数据处理的双剑合璧
Pandas与NumPy是Python数据科学的核心工具。NumPy以高效的多维数组支持数值计算,适用于大规模矩阵运算;Pandas则提供灵活的DataFrame结构,擅长处理表格型数据与缺失值。二者在性能与功能上各具优势,协同构建现代数据分析的技术基石。
338 0
|
机器学习/深度学习 数据处理 Python
从NumPy到Pandas:轻松转换Python数值库与数据处理利器
从NumPy到Pandas:轻松转换Python数值库与数据处理利器
323 1
|
机器学习/深度学习 数据处理 计算机视觉
NumPy实践宝典:Python高手教你如何轻松玩转数据处理!
【8月更文挑战第22天】NumPy是Python科学计算的核心库,专长于大型数组与矩阵运算,并提供了丰富的数学函数。首先需安装NumPy (`pip install numpy`)。之后可通过创建数组、索引与切片、执行数学与逻辑运算、变换数组形状及类型、计算统计量和进行矩阵运算等操作来实践学习。NumPy的应用范围广泛,从基础的数据处理到图像处理都能胜任,是数据科学领域的必备工具。
175 0
下一篇
oss云网关配置