本文共 2073 字,大约阅读时间需要 6 分钟。
Python中的列表虽然可以用来存储一组值,但在进行数值计算时效率较低且内存占用较高。这是因为列表需要存储每个元素的指针,而不是直接存储数值。为了弥补这一不足,Python提供了array
模块,但其仅支持一维数组且没有丰富的运算功能。因此,numpy库的出现填补了这些空白,提供了高性能的N维数组(ndarray)对象,适合进行数值计算和数据分析。
numpy是Python中进行科学计算和数据分析的基础库,主要功能包括:
numpy广泛应用于以下领域:
安装numpy最简单的方法是通过pip工具。以下是详细的安装步骤:
python -m pip install --user numpy
--user
选项表示安装在当前用户目录下,而不是系统目录。
ndarray是numpy中最核心的数据结构,它支持存储同类型元素的多维数组。每个元素在内存中占据相同大小的区域,并通过dtype
对象存储数据类型信息。与Python列表类似,ndarray支持通过索引或切片操作。
最常用的方法是使用numpy.array()
函数,它可以接受任何序列型对象并生成对应的numpy数组。支持嵌套序列创建多维数组。
import numpy as npa = [1, 2, 3, 4]b = np.array(a)# b的结果:array([1, 2, 3, 4])c = np.array([[1, 2], [3, 4]])# c的结果:[[1 2] [3 4]]
除了array()
函数,还可以通过zeros()
、ones()
、empty()
等函数创建特定形状或全零/全一的数组:
np.zeros(3) # 全零一维数组:array([0., 0., 0.])np.ones(3) # 全一一维数组:array([1., 1., 1.])np.zeros((3, 3)) # 全零二维数组:array([[0., 0., 0.], [0., 0., 0.], [0., 0., 0.]])np.identity(3) # 单位矩阵:array([[1., 0., 0.], [0., 1., 0.], [0., 0., 1.]])
通过random
子模块可以创建随机数组:
np.random.rand(5, 5) # 0-1之间的随机数,5x5数组np.random.uniform(0, 100) # 0-100之间的随机数np.random.randint(0, 50) # 0-49之间的随机整数
通过ndarray
的属性可以获取数组信息:
size
:数组元素个数shape
:数组形状ndim
:数组维度dtype
:数组元素类型itemsize
:元素字节大小import numpy as npx = np.array([(1, 2, 3), (4, 5, 6)])print(x.shape) # (2, 3)print(x.reshape(3, 2))
数组运算的关键在于矢量化,通过批量运算避免循环:
arr = np.array([[1., 2., 3.], [4., 5., 6.]])arr / arr # 结果:[[1. 0. 0.], [0. 1. 0.]]arr * arr # 结果:[[1., 4., 9.], [16., 25., 36.]]
支持一维、二维及多维数组的切片操作:
arr = np.arange(10)arr[5:8] = 12arr # [ 0, 1, 2, 3, 4, 12, 12, 12, 8, 9]
提供丰富的数学函数和统计方法:
sum
、mean
、std
、max
、min
等统计方法cumsum
和cumprod
进行累加和累积操作arr = np.random.randn(5, 4) # 5x4正态分布数组print(arr.mean()) # 平均值print(np.mean(arr)) # 平均值print(arr.sum()) # 所有元素的和print(arr.cumsum(0)) # 按行累加
通过以上内容可以看出,numpy库为Python提供了强大的数值计算和数据处理能力,是科学计算和数据分析的核心工具。
转载地址:http://tolg.baihongyu.com/