Python科学计算应用基础之Numpy
发布日期:2021-05-24 00:56:02 浏览次数:20 分类:精选文章

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

Python与Numpy入门课程

前言

Python是数据处理语言中广泛使用的工具之一,而Jupyter Notebook作为一个Data Science IDE,凭借其高效便捷的交互式工作环境,不仅适合数据分析,也是学习numpy的理想平台。

安装Jupyter Notebook

在终端中输入以下命令即可安装Jupyter Notebook:

pip install jupyter

启动Jupyter Notebook,可以在工作目录中输入jupyter notebook,即可打开浏览器查看工作界面。对于工作目录的访问,你可以通过鼠标点击进入或在文件路径中输入cmd然后回车。

安装numpy

安装numpy的命令是:

pip install numpy

一、numpy基础知识

1.1 Numpy的基本数组类型

numpy提供了多种扩展的数组类型,其中最常用的是ndarray。以下是numpy和Python列表的主要区别:

  • 计算效率:在N slave进行大规模数据计算时,numpy显著优于Python的list类型。
  • 内存管理:Numpy的数组是基于C语言实现的,内存使用更高效。

当你明白numpy的优势后,astype函数可以帮助你快速将数据类型转换。例如:

import numpy as npx = np.array([1.0, 2.0, 3.0])y = x.astype('int32')

通过查看nbytesdtype参数,可以了解不同数据类型所需的内存大小。例如:

x = np.array([1, 2, 3, 4, 5], dtype=np.int64)

这里,dtype=np.int64意味着每个数占用8个字节,总占用64个字节。

1.2 数组属性解析

numpy数组的属性包括flagsshapestridesndimbase等。每个属性都提供了不同方面的信息,例如:

  • flags:以布尔形式显示数组属性,如CONTIGUOUS(数据块连续性)、OWNERWABLE(数据可写性等)。
  • shape:表示数组的维度。
  • strides:表示每个维度内元素的步长。
  • base:表示数组继承自哪个ndarray

通过运行以下代码可以更直观地了解这些属性的含义:

import numpy as npx = np.array([[1, 2, 3], [4, 5, 6]], dtype=np.int32)print(x.flags)print(x.shape)  # 输出:(2, 3)print(x.strides)  # 输出:(2, 1)

1.3 数组与矩阵的生成

在实际应用中,生成满足需求的数组或矩阵非常重要。Numpy提供了多种函数来帮助生成:

  • np.zeros:创建全零矩阵。
  • np.ones:创建全一矩阵。
  • np.full:创建指定值矩阵。

例如,生成一个二维全零矩阵:

y = np.zeros((3, 3))

与生成一维全零数组

z = np.zeros(5)

可以通过行或列的方式切换维度。

1.4 随机数组与矩阵

在实际分析中,随机数据往往是必不可少的。Numpy提供了丰富的随机数生成函数,可以根据需求选择合适的分布:

  • 均匀分布
np.random.rand(3)
  • 正态分布
np.random.normal(0, 1, 3)

这样生成的数组可以直接用于后续的数据分析或算法训练。

2. 数组操作

2.1 基本操作

Numpy数组的操作包括索引、切片和重塑。以下是一个简单的示例:

x = np.array([1, 2, 3], dtype=np.int8)x[0] = 10print(x)  # 输出:[10 2 3]

如果对切片进行修改,原数组也会随之改变,这就体现了numpy数组的共享特性。

通过reshape方法可以改变数组的形状。如果需要生成新的数据块,可以使用copy()方法。

2.2 数据合并与分割

在高并发计算中,合并和分割是常见操作。Numpy提供了多种函数来实现:

  • np.vstacknp.hstack:用于二维数组的合并。
  • np.split:用于一维数组的分割。

例如,将两个一维数组合并为二维数组:

a = np.array([1, 2, 3])b = np.array([4, 5, 6])c = np.vstack((a, b))print(c.shape)  # 输出:(2, 3)

需要注意的是,合并数据时需要确保原数组的维度一致。

2.3 数组与矩阵运算

Numpy的阵向量和矩阵运算功能非常强大,常用于机器学习和数据科学领域。以下是一个简单的矩阵乘法示例:

A = np.array([[1, 2], [3, 4]])B = np.array([[5, 6], [7, 8]])C = np.dot(A, B)print(C)  # 输出:[[19 22]               #[25 34]]

如果需要高效计算,可以利用numpy的优化。

2.4 操作统计

为了了解数据集的统计特性,可以通过以下方法计算最大值、最小值等:

max_value = np.max(arr)min_value = np.min(arr)mean_value = np.mean(arr)

对于二维数组,可以使用argmax等函数获取差异最大值的位置:

print(np.argmax([[1, 2], [3, 4]]))

2.5 索引运算

在实际分析中,索引运算是必不可少的。Numpy提供了灵活的索引方式,如布尔索引:

arr = np.array([10, 2, 3, 5, 1])filtered = arr[2:3]print(filtered)  # 输出:[3]

此外,伪索引运算通过args来实现,可以直接获取数据索引位置,如:

print(arr[args])

2.6 Fancy Indexing

复杂索引对数据处理灵活性贡献很大。Numpy支持通过布尔数组或索引数组进行索引。在实际应用中,这对于数组的高效操作至关重要。

总结

  • 生成随机数:在Python中可以直接使用random.randint生成随机数,但Numpy内置更高效的函数。
  • 依赖关系:Numpy与SciPy等库兼容,为科学计算提供了强大的工具。
  • 最佳实践:尽可能利用Numpy的向量化操作,减少Python循环,提高运行效率。

通过这些简单的示例和介绍,你应该已经对Numpy有了一个基本的认识。

上一篇:Python科学计算--KNN算法
下一篇:Python图像处理之PIL

发表评论

最新留言

很好
[***.229.124.182]2025年04月21日 09时38分30秒