Numpy数组的运算与广播

本文详细介绍了如何使用Numpy进行数组的算数运算,包括加、减、乘、除、幂运算以及取余操作,并展示了数组广播的概念及其规则。此外,还深入探讨了如何利用Numpy进行矩阵乘法,即矩阵积的计算。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Numpy算数运算

用于执行算数运算的输入数组必须具有相同的行列或符合数组广播规则

import numpy as np
a = np.arange(9).reshape(3,3)
b = np.array([2,3,4])
print(a)
print(b)
print('**************************************')
#两个数组相加
print(np.add(a,b))
print(a+b)
print('**************************************')
#两个数组相减
print(a-b)
print(np.subtract(a,b))
print('**************************************')
#两个数组相乘
print(a*b)
print(np.multiply(a,b))
print('**************************************')
print(a/b)
print(np.divide(a,b))
print('**************************************')

#两个数组取幂
print(a**b)
print(np.power(a,b))
print('**************************************')
print()

print()
print('****************两个数组取余**********************')
#mod 两个数组取余
a = np.array([10,20,30])
b = np.array([3,5,7])
print(np.mod(a,b))
print(np.remainder(a,b))
print('**************************************')
print()

运行结果

数组的矩阵积
两个二位矩阵,满足第一个矩阵的列数与第二个矩阵的行数相同,那么就可以进行矩阵的乘法,即矩阵积

print()
arr1 = np.array([
    [110,60,220],
    [115,45,180],
    [132,67,209]
])
arr2 = np.array([
    [12.3,0.04],
    [204,2.34],
    [9.98,0.45]
])
print(arr2)
print(arr1.dot(arr2))
print('**************************************')

运行结果

‘’’
Numpy广播
术语广播是指 NumPy 在算术运算期间处理不同形状的数组的能力。
对数组的算术运算通常在相应的元素上进行,如果两个阵列具有完全相同的形状,则这些操作无缝执行
‘’’

a = np.array([1,2,3,4])
b = np.array([[10,20,30,40],[1,2,3,4]])
c = a * b
print(c)

运行结果
‘’’
如果两个数组的维数不相同,则元素到元素的操作是不可能的。
然而,在 NumPy 中仍然可以对形状不相似的数组进行操作,因为它拥有广播功能。
较小的数组会广播到较大数组的大小,以便使它们的形状可兼容。
如果满足以下规则,可以进行广播:
让所有输入数组都向其中shape最长的数组看齐,shape中不足的部分都通过在前面加1补齐
输出数组的shape是输入数组shape的各个轴上的最大值
如果输入数组的某个轴和输出数组的对应轴的长度相同或者其长度为1时,这个数组能够用来计算,
否则出错
当输入数组的某个轴的长度为1时,沿着此轴运算时都用此轴上的第一组值

‘’’

### NumPy 数组运算教程 NumPy 是 Python 中用于科学计算的核心库,其主要功能围绕 N 维数组对象展开。通过 NumPy 的矢量化特性,可以实现高效的批量运算,无需显式编写循环结构。 #### 1. 大小相等数组运算 当两个 NumPy 数组具有相同的形状时,可以直接对它们进行逐元素的操作。这种操作方式被称为矢量化 (vectorization),能够显著提升性能并简化代码逻辑[^1]。 ```python import numpy as np a = np.array([1, 2, 3]) b = np.array([4, 5, 6]) addition = a + b # 加法 subtraction = a - b # 减法 multiplication = a * b # 乘法 division = a / b # 除法 print(addition) # 输出: [5 7 9] print(subtraction) # 输出: [-3 -3 -3] print(multiplication) # 输出: [4 10 18] print(division) # 输出: [0.25 0.4 0.5 ] ``` #### 2. 数组标量的运算 除了数组之间的运算外,还可以将一个标量应用于整个数组。在这种情况下,标量会广播数组的每一个元素上。 ```python scalar_addition = a + 10 # 将标量加到每个元素 scalar_multiplication = a * 2 # 将标量乘以每个元素 print(scalar_addition) # 输出: [11 12 13] print(scalar_multiplication) # 输出: [2 4 6] ``` #### 3. 常见数学函数的应用 NumPy 提供了大量的内置数学函数,这些函数支持直接作用于数组上的每一种元素。常见的例子包括三角函数、指数函数和对数函数等[^2]。 ```python c = np.array([np.pi/2, 0, np.pi]) sin_values = np.sin(c) # 计算正弦值 exp_values = np.exp(a) # 计算自然指数 log_values = np.log(np.abs(b)) # 对绝对值取自然对数 print(sin_values) # 输出: [1. 0. 1.2246468e-16] print(exp_values) # 输出: [ 2.71828183 7.3890561 20.08553692] print(log_values) # 输出: [1.38629436 0. 1.79175947] ``` #### 4. 广播机制 即使数组的形状完全相同,在某些条件下仍然可以通过 **广播** 来完成运算。这使得同维度或大小的数组也可以相互配合工作[^3]。 ```python d = np.array([[1], [2]]) e = np.array([3, 4]) broadcast_result = d + e print(d.shape) # 输出: (2, 1) print(e.shape) # 输出: (2,) print(broadcast_result) # 输出: [[4 5] [5 6]] ``` ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值