博客
关于我
(100天2小时第十五天)numpy数组的基本运算
阅读量:779 次
发布时间:2019-03-24

本文共 1683 字,大约阅读时间需要 5 分钟。

Numpy是Python中最常用的数组处理库,提供了一系列强大的数组操作功能。以下是关于Numpy数组操作的基础知识和常用技巧全解析。

数组的算术运算会自动作用于每个元素,并返回一个新的数组。这种特性使得Numpy非常便于批量处理数据。能够灵活运用+号和*号进行操作,轻松实现数据变换。

需要注意的是,矩阵乘法不使用普通的乘法符号,而是需要使用dot函数来完成。例如,类似于以下代码:

a = np.array([[1, 1],             [0, 1]])b = np.array([[2, 0],             [3, 4]])print(a * b)  # 输出:[[2, 0], [0, 4]]print(a.dot(b))  # 输出:[[3, 4]]

通过dot函数可以实现更复杂的矩阵乘法,这也是Numpy在高性能计算中的核心优势。

+= 和 *= 操作符可以直接修改原有的数组,而不是新建一个,这提供了高效更新数据的可能性。例如:

a = np.ones((2, 3), dtype=int)print(a)  # 输出:[[1, 1, 1], [1, 1, 1]]b = np.random.random((2, 3))print(b)  # 输出:数组形状:(2,3),发现随机值a += b  # 修改a数组print(b)  # 现在b的所有元素都和a相加后的结果一致

需要注意的是,数组的类型会影响操作。例如,上述示例中,a是int类型,b是float类型。当执行a += b时,b会被自动转换为float类型,而a则会由于类型兼容性问题无法支持float运算。这提示我们在进行数组操作时,需要注意数据类型的兼容性。

在运算时,不同类型的数组会自动向精度更高的类型转换,以保证结果的准确性。例如:

a = np.ones(3, dtype=np.int32)b = np.linspace(0, np.pi, 3)c = a + bprint(c)

这里,a是int32,b是float64,运算后结果c会是float64类型。同时,Numpy支持复数运算,可以通过乘以1j实现。

Numpy的ndarray功能强大,支持一系列内置函数,用于实现高效的数据分析操作。例如:

a = np.arange(15).reshape(3, 5)print(a)  # 输出:           # [[7, 8, 9,10,11],           #  [12,13,14,15,16],           #  [17,18,19,20,21]]print(a.sum())  # 输出:78print(a.min())  # 输出:7print(a.max())  # 输出:21

通过ndarray,用户可以轻松实现矩阵的行、列操作,如通过axis参数设置运算方向。

默认情况下,Numpy操作会沿着数组的所有轴执行,但其实也可以灵活指定axis来限定运算方向。例如:

b = np.arange(12).reshape(3, 4)print(b)  # 输出:           # [[0, 1, 2, 3],           #  [4, 5, 6, 7],           #  [8, 9,10,11]]print(b.sum(axis=0))  # 对每一列求和,结果为 [6, 12, 18]print(b.min(axis=1))  # 对每一行求最小值,结果为 [0, 4, 8]print(b.cumsum(axis=1))  # 对每一行进行累加,结果:                           # [[0, 1, 2,3],                           #  [4, 5, 6,7],                           #  [8,9,10,11]]

这是Numpy在数组操作中提供的灵活性,非常适用于多维数据的分析需求。

转载地址:http://bsuuk.baihongyu.com/

你可能感兴趣的文章
PyQt5教程——组件(7)
查看>>
pyqt5计时器的使用
查看>>
PyQt5设计桌面程序步骤
查看>>
PyQt5:检查鼠标是否在Enter-Event中按住
查看>>
pyqt出现“Ui_Dialog has no attribute “show””
查看>>
PyQt:如何使用QAxWidget引用发送参数
查看>>
PyQt:我可以制作一个带有图标和文本的工具栏按钮吗?
查看>>
pyscopg2:是否可以在循环中动态添加 %s
查看>>
Pyserial 缓冲区的填充速度比我读的快
查看>>
PySpark - 在数据框中求和一列并将结果返回为 int
查看>>
pyspark On Yarn 的模块依赖问题
查看>>
PySpeech(Python)-转录MP3文件?
查看>>
Pyspider WebUI 未授权访问致远程代码执行漏洞复现
查看>>
pyspider爬虫学习-文档翻译-Architecture.md
查看>>
pytesseract.pytesseract.TesseractNotFoundError: tesseract is not installed or it‘s not in your path
查看>>
Pytesseract集字符白名单
查看>>
PyTorch DataLoader 报错 Segmentation fault (core dumped) 的原因及解决方案
查看>>
Pytest ------ 标记函数
查看>>
Pytest Fixture的妙用:深度解析范围和实际运用!
查看>>
Pytest monkeypatch不适用于导入的函数
查看>>