如何优雅实现对应维度一致的两组NumPy数组列表的减法运算?
优雅实现方式
可以利用Python的列表推导式结合NumPy数组的矢量化运算来实现,代码简洁高效:
import numpy as np my_array1 = [np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]), np.array([[10], [13], [15]])] my_array2 = [np.array([[3, 2, 1], [6, 5, 4], [9, 8, 7]]), np.array([[7], [8], [9]])] # 计算对应数组的差值 my_result = [arr1 - arr2 for arr1, arr2 in zip(my_array1, my_array2)]
说明
zip(my_array1, my_array2)会将两个列表中索引位置相同的数组一一配对;- 列表推导式遍历每一对数组,直接用
arr1 - arr2完成NumPy数组的矢量化减法,自动对应元素相减,无需手动循环遍历数组元素; - 运行后
my_result的结果与你预期的my_want完全一致。
如果需要验证结果,可以用np.array_equal逐个检查:
# 验证结果是否符合预期 my_want = [np.array([[-2, 0, 2], [-2, 0, 2], [-2, 0, 2]]), np.array([[3], [5], [6]])] all_match = all(np.array_equal(res, want) for res, want in zip(my_result, my_want)) print(all_match) # 输出 True
内容的提问来源于stack exchange,提问作者Mizzle
相关产品推荐
相关产品推荐

