NumPy是Python中一个用于科学计算的重要扩展库,它提供了高效的数组和矩阵计算功能,支持广泛的数学、逻辑和操纵操作。本篇攻略将着重介绍NumPy的数组(数组是NumPy中的基础对象)的基础知识。
NumPy的数组
NumPy的数组是一个多维容器,可以包含同类型的数据。一个数组由一个描述其类型、大小和形状的元数据组成。通过NumPy数组,用户可以高效的进行矩阵和向量运算,还可以方便地进行数据的处理和分析。
数组的创建
NumPy数组可以通过很多方式创建。最常用的创建方式是通过列表或元组转换得到。
import numpy as np
# 列表转化生成一维数组
a = np.array([1, 2, 3])
# 元组转化生成二维数组
b = np.array([(1, 2), (3, 4)])
除此之外,还可以通过NumPy自带的一些函数创建数组,例如:
#创建0矩阵,参数为矩阵形状
c = np.zeros((2,2))
#创建1矩阵,参数为矩阵形状
d = np.ones((2,2))
#创建单位矩阵,参数为矩阵大小
e = np.eye(2)
#创建空矩阵,参数为矩阵形状
f = np.empty((2,2))
数组的属性
创建好的数组,可以通过一些属性查看其各种特点。例如数组的维度、形状和元素数据类型。
import numpy as np
a = np.array([1, 2, 3]) # 一维数组
b = np.array([(1, 2), (3, 4)]) # 二维数组
print(a.ndim) # 数组的维度
print(b.ndim)
print(a.shape) # 数组的形状
print(b.shape)
print(a.dtype) # 数组的数据类型
print(b.dtype)
输出:
1
2
(3,)
(2, 2)
int64
int64
数组的索引与切片
NumPy数组的元素可以使用索引和切片来访问和修改。数组的索引是从0开始计数的。
import numpy as np
a = np.array([1, 2, 3])
b = np.array([(1, 2), (3, 4)])
print(a[0]) # 访问第一个元素
print(b[1, 0]) # 访问第二行第一个元素
a[0] = 4 # 修改第一个元素
print(a)
c = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(c[:2, 1:]) # 切片访问数组的前两行与第二列及其后面的元素
输出:
1
3
[4 2 3]
[[2 3]
[5 6]]
数组的运算
NumPy数组可以进行基本的算术运算,包括加、减、乘、除等运算,以及矩阵的变换操作。
import numpy as np
a = np.array([1, 2, 3])
b = np.array([(1, 2), (3, 4)])
print(a + 1) # 加法运算
print(b * 2) # 乘法运算
print(np.dot(b, (1, 2))) # 矩阵乘法
输出:
[2 3 4]
[[2 4]
[6 8]]
[ 5 11]
示例1:计算一维数组中的方差
import numpy as np
a = np.array([1, 2, 3, 4, 5])
mean = np.mean(a) # 计算数组的平均值
var = np.sum((a-mean)**2) / (len(a)-1) # 计算方差
print(var)
输出:
2.5
示例2:矩阵转置运算
import numpy as np
a = np.array([(1, 2), (3, 4), (5, 6)])
b = np.transpose(a) # 矩阵转置运算
print(a)
print(b)
输出:
[[1 2]
[3 4]
[5 6]]
[[1 3 5]
[2 4 6]]
本篇攻略介绍了NumPy数组的基础知识,包括数组的创建、属性、索引和切片、运算,以及两个应用示例。掌握这些基础还是非常重要的。NumPy数组是SciPy中各种算法的基础之一,也是数据分析、机器学习等领域必须熟练掌握的知识点。