📅  最后修改于: 2023-12-03 14:46:38.147000             🧑  作者: Mango
NumPy是Python中用于科学计算的一个重要的库,它提供了高性能的数组对象以及用于数组操作的工具。在NumPy的基础上,还有一些高级的应用,本文将对这些应用进行介绍。
使用numpy.concatenate
函数可以将多个数组合并在一起。例如,合并两个一维数组:
import numpy as np
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
c = np.concatenate([a, b])
print(c)
# [1 2 3 4 5 6]
合并多维数组时,需要指定合并的维度。例如,合并两个二维数组:
a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6], [7, 8]])
c = np.concatenate([a, b], axis=1)
print(c)
# [[1 2 5 6]
# [3 4 7 8]]
使用numpy.split
函数可以将一个数组拆分成多个子数组。例如,将一个一维数组拆分成三个子数组:
a = np.array([1, 2, 3, 4, 5, 6])
b, c, d = np.split(a, [2, 4])
print(b, c, d)
# [1 2] [3 4] [5 6]
NumPy中的广播是指在进行数组操作时,可以自动将一些形状不同的数组进行扩展或缩小,使它们的形状相同,从而进行操作。
例如,两个形状不同的二维数组相加:
a = np.array([[1, 2], [3, 4]])
b = np.array([1, 2])
c = a + b
print(c)
# [[2 4]
# [4 6]]
在这个例子中,两个形状不同的数组a
和b
进行相加时,b
会自动扩展为[[1, 2], [1, 2]]
,使得两个数组的形状相同,从而可以进行操作。
NumPy中提供了大量的线性代数相关的函数,例如计算矩阵的乘法、矩阵的逆、矩阵的特征值等。
例如,计算两个矩阵的乘积:
a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6], [7, 8]])
c = np.dot(a, b)
print(c)
# [[19 22]
# [43 50]]
NumPy中提供了大量的随机数生成函数,例如生成服从正态分布的随机数、生成随机整数等。
例如,生成100个服从正态分布的随机数:
a = np.random.normal(size=100)
print(a)
在NumPy中,可以使用布尔数组进行索引,同时可以使用np.where
函数返回满足条件的元素的下标。
例如,对一个二维数组进行筛选,返回其中第一列大于0的行:
a = np.array([[1, 2], [3, 4], [-1, -2]])
b = a[:, 0] > 0
c = np.where(b)
print(a[c])
# [[1 2]
# [3 4]]
本文介绍了NumPy的一些高级应用,包括数组的合并与拆分、广播、线性代数、随机数生成和数组索引高级应用。在实际应用中,这些高级应用可以帮助我们更好地利用NumPy,提高科学计算的效率和精度。