numpy.cross
numpy.cross(a, b, axisa=-1, axisb=-1, axisc=-1, axis=None) [source]
返回两个(数组)向量的叉积。
a和b 的叉积是垂直于a和b的向量。如果a和b是向量的数组,则默认情况下,向量由a和b的最后一个轴定义,并且这些轴的尺寸可以为2或3。其中a或b的尺寸为2时,则第三个分量假定输入向量为零,并据此计算叉积。如果两个输入向量的尺寸均为2,则返回叉积的z分量。
参数: | a :array_like 第一个向量的成分。 b :array_like 第二个向量的成分。 axisa : 定义向量的a轴。默认情况下,最后一个轴。 axisb : 定义向量的b轴。默认情况下,最后一个轴。 axisc : 包含叉积向量的c轴。 如果两个输入向量的维数均为2, 则将其忽略, 因为返回值为标量。默认情况下,最后一个轴。 axis : 如果定义,则定义矢量和叉积的a,b和c轴。 覆盖 |
返回值: | c : 矢量交叉乘积。 |
Raises: | ValueError 当a and/or b中的向量的维数不等于2或3。 |
Notes
1.9.0版中的新功能。
支持完整的输入广播。
例子
1)计算两个三维向量的叉积
import numpy as np # 定义两个三维向量 a = np.array([1, 2, 3]) b = np.array([4, 5, 6]) # 计算叉积 cross_product = np.cross(a, b) print("Cross Product of a and b:", cross_product) # 输出: [-3 6 -3]
2)计算多个三维向量的叉积
import numpy as np # 定义两个二维数组,每个数组包含多个三维向量 a = np.array([[1, 2, 3], [4, 5, 6]]) b = np.array([[7, 8, 9], [10, 11, 12]]) # 计算叉积 cross_product = np.cross(a, b) print("Cross Product of a and b:", cross_product) # 输出: [[-6 12 -6]# [-6 12 -6]]
3)计算二维向量的叉积
对于二维向量,叉积的结果是一个标量(因为二维向量叉积的结果在三维空间中是垂直于xy平面的向量,其唯一的非零分量是z分量,因此结果是标量)。
import numpy as np # 定义两个二维向量 a = np.array([1, 2]) b = np.array([3, 4]) # 计算叉积 cross_product = np.cross(a, b) print("Cross Product of a and b:", cross_product) # 输出: -2
4)指定不同的轴进行计算
import numpy as np # 定义两个三维向量的数组 a = np.array([[1, 2, 3], [4, 5, 6]]) b = np.array([[7, 8, 9], [10, 11, 12]]) # 指定轴进行计算 cross_product = np.cross(a, b, axisa=0, axisb=0) print("Cross Product of a and b with specified axes:", cross_product) # 输出: [ 4 -8 4]
5)使用示例
import numpy as np # 示例1:计算两个三维向量的叉积 x = [1, 2, 3] y = [4, 5, 6] result = np.cross(x, y) print("矢量叉积:", result) # 输出: array([-3, 6, -3]) # 示例2:一个向量的尺寸为2 x = [1, 2] y = [4, 5, 6] result = np.cross(x, y) print("矢量叉积:", result) # 输出: array([12, -6, -3]) # 示例3:等效地将二维向量扩展为三维向量进行计算 x = [1, 2, 0] y = [4, 5, 6] result = np.cross(x, y) print("矢量叉积:", result) # 输出: array([12, -6, -3]) # 示例4:两个向量的尺寸均为2 x = [1, 2] y = [4, 5] result = np.cross(x, y) print("矢量叉积:", result) # 输出: array(-3) # 示例5:多个向量的叉积 x = np.array([[1, 2, 3], [4, 5, 6]]) y = np.array([[4, 5, 6], [1, 2, 3]]) result = np.cross(x, y) print("多个向量的叉积:") print(result) # 输出: # array([[-3, 6, -3], # [ 3, -6, 3]]) # 示例6:使用axisc关键字更改c的方向 result = np.cross(x, y, axisc=0) print("更改c的方向的叉积:") print(result) # 输出: # array([[-3, 3], # [ 6, -6], # [-3, 3]]) # 示例7:使用axisa和axisb更改x和y的向量定义 x = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) y = np.array([[7, 8, 9], [4, 5, 6], [1, 2, 3]]) result = np.cross(x, y) print("默认轴的叉积:") print(result) # 输出: # array([[ -6, 12, -6], # [ 0, 0, 0], # [ 6, -12, 6]]) result = np.cross(x, y, axisa=0, axisb=0) print("更改轴的叉积:") print(result) # 输出: # array([[-24, 48, -24], # [-30, 60, -30], # [-36, 72, -36]])