NumPy是Python科学计算的基石,其强大的功能主要源于其N维数组对象ndarray。掌握ndarray对于有效使用NumPy至关重要。本教程将全面介绍ndarray,涵盖其创建、属性和基本操作。
目录
Ndarray定义
NumPy ndarray(N维数组)是一个同构的、多维的容器,包含相同类型和大小的元素。可以将其视为Python列表的高度优化、复杂版本,能够处理多维数据(一维、二维、三维及更高维)。与可以包含不同数据类型元素的Python列表不同,ndarray强制类型同构,从而获得显著的性能提升。这种同构性使得向量化运算成为可能——同时对整个数组应用运算,而不是逐个元素进行运算,从而大大提高速度。
ndarray的关键特性:
- 同构:所有元素共享相同的数据类型。
- 多维:表示不同维数的数据(一维向量、二维矩阵、三维张量等)。
- 固定大小:数组的大小在创建时固定,调整大小通常需要创建一个新数组。
- 向量化运算:支持高效的逐元素和数组级运算。
- 内存效率:将数据存储在连续的内存块中,从而提高性能。
Ndarray创建
使用NumPy的函数可以轻松创建ndarray:
import numpy as np
# 从列表创建
arr_1d = np.array([1, 2, 3, 4, 5])
arr_2d = np.array([[1, 2, 3], [4, 5, 6]])
# 使用专用函数
arr_zeros = np.zeros((2, 3)) # 全零数组
arr_ones = np.ones((3, 2)) # 全一数组
arr_arange = np.arange(10) # 数值序列
arr_linspace = np.linspace(0, 1, 5) # 均匀间隔的数字
arr_random = np.random.rand(2, 2) # 随机数
print(arr_1d)
print(arr_2d)
print(arr_zeros)
print(arr_ones)
print(arr_arange)
print(arr_linspace)
print(arr_random)
Ndarray属性
Ndarray对象提供了一些关键属性,用于提供有关其形状、数据类型、大小等信息。了解这些属性是有效操作ndarray的关键。
ndim
:数组的维数(轴)。shape
:一个元组,指示数组沿每个维度的尺寸(例如,对于3×4矩阵为(3, 4))。size
:元素的总数。dtype
:元素的数据类型(例如,int32
、float64
、bool
)。itemsize
:每个元素的大小(以字节为单位)。nbytes
:数组的总大小(以字节为单位)(itemsize * size
)。
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
print("维数:", arr.ndim)
print("形状:", arr.shape)
print("大小:", arr.size)
print("数据类型:", arr.dtype)
print("元素大小:", arr.itemsize)
print("总字节数:", arr.nbytes)
Ndarray基本操作
NumPy提供高效的逐元素和数组级运算。简单的算术运算(+、-、*、/、//、%、**)是向量化的:
import numpy as np
arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])
print("加法:", arr1 + arr2)
print("减法:", arr1 - arr2)
print("乘法:", arr1 * arr2)
print("除法:", arr1 / arr2)
还 readily 提供了更高级的运算(如矩阵乘法、点积等)。