前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >手撕numpy(二):各种特性和简单操作

手撕numpy(二):各种特性和简单操作

作者头像
朱小五
发布于 2020-03-18 09:39:51
发布于 2020-03-18 09:39:51
50500
代码可运行
举报
文章被收录于专栏:凹凸玩数据凹凸玩数据
运行总次数:0
代码可运行

手撕numpy系列持续更新中~

《手撕numpy(一):简单说明和创建数组的不同方式》

1、numpy中ndarray的一些常用属性

  • ndim:返回数组的维数;
  • shape:返回数组的形状;
  • dtype:返回数组元素的数据类型;
  • size:返回数组中元素的个数;
  • itemsize:返回数组中每一个元素占用空间的大小,以字节为单位;
  • nbytes:返回数组中所有元素占用空间的大小,以字节为单位;

1)举例说明

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
x = np.arange(10).reshape(2,5)
display(x)

display(x.ndim)
display(x.shape)
display(x.dtype)
display(x.size)
display(x.itemsize)
display(x.nbytes)

结果如下:

2)单独说一下属性itemsize和nbytes的含义

2、列表与数组之间的相互转化

1)列表转数组:直接将一个列表当作array()函数的参数即可;

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import numpy as np
list1 = list(range(10))
display(list1)
array1 = np.array(list1)
display(array1)

结果如下:

2)数组转列表:tolist()

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import numpy as np
array2 = np.arange(10).reshape(2,5)
display(array2)
list2 = array2.tolist()
display(list2)

array3 = np.arange(10)
display(array3)
list3 = array3.tolist()
display(list3)

结果如下:

3、numpy中的常数

  • 正无穷:Inf = inf = infty = Infinity = PINF
  • 负无穷:NINF
  • 正零:PZERO
  • 负零:NZERO
  • 非数值:nan = NaN = NAN
  • 自然数e:e
  • π:pi
  • 伽马:euler_gamma
  • None:newaxis

操作如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
display(np.inf)
display(np.NINF)
display(np.PZERO)
display(np.NZERO)
display(np.nan)
display(np.e)
display(np.pi)
display(np.euler_gamma)
display(np.newaxis)

结果如下:

4、numpy中的数据类型与数据类型转化

1)numpy中常用的的数据类型

2)numpy中的数据类型转化

记住一句话:numpy中的数据类型转换,不要使用x.dtype修改元素的数据类型,最好用x.astype()这种方式。

① 使用dtype原地修改数组的数据类型;

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
x = np.array([1.2,3.4,5.6],dtype=np.float64)
display(x)
display(x.dtype)
display(x.nbytes)
# --------------------------------------------
x.dtype="float32"
display(x)
display(x.nbytes)
# --------------------------------------------
x.dtype="float16"
display(x)
display(x.nbytes)

结果如下:

② 使用dtype原地修改数组的数据类型,为什么会出现上述现象?

③ 使用astype()函数修改数组的数据类型:相当于新创建了一个数组;

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
z = np.array([1.5,3.7,4.8])
display(z)
display(z.dtype)
# --------------------------
zz = z.astype(np.int64)
display(zz)
display(zz.dtype)

结果如下:

5、改变数组的形状

  • 使用numpy中的reshape()函数修改数组对象;
  • 使用数组对象的reshape()函数修改数组对象(这个更好用);

1)使用numpy中的reshape()函数修改数组对象;

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
xx = np.arange(10).reshape(2,5)
xxx = np.reshape(xx,(5,2))
display(xxx)

结果如下:

2)使用数组对象的reshape()函数修改数组对象;

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
yy = np.arange(10).reshape(2,5)
display(yy)

结果如下:

3)改变数组形状时,如果维度大于1,可以将“最后一个维度”设置为-1;

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
p = np.arange(6).reshape(2,3)
display(p)
# ----------------------------
q = np.arange(6).reshape(2,-1)
display(q)

结果如下:

  • 注意:可以这样做的原因在于,当你指明了前面的维度,最后一个维度会根据数组元素个数和前面的维度数,自动计算出最后一个维度的维度数,也就是说【维度一 * 维度二 * … * 维度N = 元素个数】。

6、数组扁平化:ravel()函数和flatten()函数

① 两个函数的相同点

  • 不管你给我的数组是多少维的,通过这两个函数之后,我都给你压缩为一维数组。

② 两个函数的不同点

③ 操作如下

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
array1 = np.array([[1,2,3],[4,5,6]])
display(array1)

array2 = array1.ravel()
display(array2)

array3 = array1.flatten()
display(array3)

# 此时我们修改array2和array3中的某个元素,看看对于array1的影响
array2[0] = 666
display(array2)
display(array1)

array3[1] = 888
display(array3)
display(array1)

结果如下:

后台回复关键词「进群」,即刻加入读者交流群~

先撕numpy,再撕pandas!

朱小五

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-03-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 凹凸数据 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
手撕numpy(三):切片和索引详解
注意:上述两个切片是否存在问题,假如不存在,结果又是什么?如果你能回答正确这两个问题,python切片,就没有问题了。
朱小五
2020/03/18
5970
手撕numpy(三):切片和索引详解
手撕numpy(一):简单说明和创建数组的不同方式​​​​​
numpy提供了一个高性能的多维数组对象ndarray(N Dimension Array),以及大量的库函数和操作,可以帮助程序员轻松地进行数值计算。
朱小五
2020/03/18
7870
再肝3天,整理了90个NumPy案例,不能不收藏!
Numpy 是什么就不太过多介绍了,懂的人都懂! 文章很长,总是要忍一下,如果忍不了,那就收藏吧,总会用到的 萝卜哥也贴心的做成了PDF,在文末获取! 前情回顾: 肝了3天,整理了90个Pandas案例,强烈建议收藏! 2021-10-18 又肝了3天,整理了80个Python DateTime 例子,必须收藏! 2021-10-20 有多个条件时替换 Numpy 数组中的元素 将所有大于 30 的元素替换为 0 将大于 30 小于 50 的所有元素替换为 0 给所有大于 40 的元素加 5 用 N
周萝卜
2021/11/08
4.1K0
numpy
* 对ndarray 来说,里面的每个元素必须是同一类型的,如果不是的话,会自动的向高精度进行转换
逸澄
2025/02/26
1091
技术图文:NumPy 的简单入门教程
这段时间,LSGO软件技术团队正在组织 “机器学习实战刻意练习”活动,这个活动是“Python基础刻意练习”活动的升级,是对学员们技术的更深层次的打磨。在用 Python 写各类机器学习算法时,我们经常会用到 NumPy库,故在这里总结一下,以方便学员们的学习。
Datawhale
2019/11/12
1.2K0
技术图文:NumPy 的简单入门教程
Numpy库
NumPy是一个功能强大的Python库,主要用于对多维数组执行计算。NumPy这个词来源于两个单词-- Numerical和Python。NumPy提供了大量的库函数和操作,可以帮助程序员轻松地进行数值计算。在数据分析和机器学习领域被广泛使用。他有以下几个特点:
用户9615083
2022/12/25
3.8K0
Numpy库
NumPy 使用教程
如果你使用 Python 语言进行科学计算,那么一定会接触到 NumPy。NumPy 是支持 Python 语言的数值计算扩充库,其拥有强大的多维数组处理与矩阵运算能力。除此之外,NumPy 还内建了大量的函数,方便你快速构建数学模型。
用户7886150
2021/01/08
2.6K0
Python基础——Numpy库超详细介绍+实例分析+附代码
NumPy是高性能科学计算和数据分析的基础包,计算速度要比python自带的函数快很多,非常好用。一般不需要安装,装Python就自动装了,如果需要:
用户7886150
2021/01/05
1.2K0
小白眼中的AI之~Numpy基础
引入一下 Numpy模块, Numpy的数组使用可以查看一下帮助文档, Numpy的 array数组类型必须是一致的(后面会讲)
逸鹏
2018/07/16
1K0
软件测试|Python科学计算神器numpy教程(二)
上一篇文章我们介绍了numpy的安装和ndarray的部分知识,本篇文章我们来介绍一下numpy的数组的常用属性以及创建数组相关内容。
霍格沃兹测试开发Muller老师
2023/07/31
2010
说声谢谢!给你需要的NumPy知识
Python虽然是一门比较好入门的语言,相较于其他语言来说是一门比较简单的语言。不过有一个很重要的问题就是,即使Python 语言的很多方法不用手打都已经被封装,可以Python初学者还是要学习很多东西。下面我结合了一些经常用到的NumPy基础知识送给大家。
小小科
2020/07/20
7950
NumPy 最详细教程(1):NumPy 数组
Numpy 是 Python 中科学计算的核心库,NumPy 这个词来源于 Numerical 和 Python 两个单词。它提供了一个高性能的多维数组对象,以及大量的库函数和操作,可以帮助程序员轻松地进行数值计算,广泛应用于机器学习模型、图像处理和计算机图形学、数学任务等领域。
丹枫无迹
2019/03/20
3.8K0
Python 的Numpy 函数到底是个啥?看这篇就足够了
Numpy 是什么 Numpy (Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。
Wu_Candy
2022/07/04
5460
科学计算Python库:Numpy入门
NumPy 是 Python 中科学计算的基础包。它是一个 Python 库,提供多维数组对象、各种派生对象(例如掩码数组和矩阵)以及用于对数组进行快速操作的各种例程,包括数学、逻辑、形状操作、排序、选择、I/O 、离散傅里叶变换、基本线性代数、基本统计运算、随机模拟等等。科学计算离不开numpy,学习数据分析必先学numpy!!! 本文由浅入深,对numpy进行入门介绍。讲解了创建数组、索引数组、运算等使用。
Crayon鑫
2023/10/10
4930
科学计算Python库:Numpy入门
NumPy 1.26 中文文档(五)
此参考手册详细介绍了 NumPy 中包含的函数、模块和对象,描述了它们的作用和功能。要了解如何使用 NumPy,请参阅完整文档。
ApacheCN_飞龙
2024/06/28
3530
NumPy 1.26 中文文档(五)
长文预警,一篇文章扫盲Python、NumPy 和 Pandas,建议收藏慢慢看
当前流行的 Python 版本有两个,2.X 和 3.X,由于 2.X 即将不再维护,所以我建议直接使用 3.X 版本作为你的主要版本。
周萝卜
2021/01/28
2.2K0
再见了,Numpy!!
什么Python方面的,Numpy、Pandas,大数据处理方面的Hive、Spark、Flink等等等等。
Python编程爱好者
2023/12/12
3910
再见了,Numpy!!
总结numpy中的ndarray,非常齐全
numpy(Numerical Python)是一个开源的Python数据科学计算库,支持对N维数组和矩阵的操作,用于快速处理任意维度的数组。
Python碎片公众号
2021/02/26
1.6K0
总结numpy中的ndarray,非常齐全
Numpy基础操作学习笔记
NumPy:Numerical Python,即数值Python包,是Python进行科学计算的一个基础包,因此要更好理解和掌握Python科学计算包,尤其是pandas,需要先行掌握NumPy库的用法
python与大数据分析
2022/03/11
6870
python的NumPy使用
Numpy 的主要用途是以数组的形式进行数据操作。 机器学习中大多数操作都是数学操作,而 Numpy 使这些操作变得简单!所以专门学习记录一下numpy是十分有必要的!
用户7886150
2021/01/03
2K0
相关推荐
手撕numpy(三):切片和索引详解
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验