python - 使用 Numpy 向量化而不是并行循环两个列表
问题描述
我有两个长度不均匀的列表或数组(比如说arr_a
, arr_b
)。我想形成第三个元组数组/列表,其中元组的第一个元素取值,元组arr_a[1st element] - arr_b[1st element]
的第二个元素取值,arr_a[1st element] - arr_b[2nd element]
然后下一个元组取值,(arr_a[2nd_element]-arr_b[2nd_element], arr_a[2nd_element] - arr_b[3rd_element])
依此类推。下面的代码使用 for 循环实现了这一点。但我想知道这是否可以通过某种 NumPy 矢量化、广播方法来实现。请注意arr_a
和arr_b
不等长 ( len(arr_b) = len(arr_a)+1
)
arr_a = np.random.randint(low = 0,high = 10,size = 10)
arr_b = np.random.randint(low = 0,high = 10,size = 11)
out:
arr_a : [4 8 6 3 3 7 8 6 0 2]
arr_b : [8 8 9 6 1 6 1 5 8 3 1]
list_c = []
for i,j in zip(range(len(arr_a)),range(len(arr_b))):
list_c.append((arr_a[i]-arr_b[i],arr_a[i]-arr_b[i+1]))
out:
list_c : [(-4, -4), (0, -1), (-3, 0), (-3, 2), (2, -3), (1, 6), (7, 3), (1, -2), (-8, -3), (-1, 1)]
解决方案
zip
我认为您可以尝试numpy
:
>>> list(zip(arr_a - arr_b[:-1], arr_a - arr_b[1:]))
[(-4, -4),
(0, -1),
(-3, 0),
(-3, 2),
(2, -3),
(1, 6),
(7, 3),
(1, -2),
(-8, -3),
(-1, 1)]
推荐阅读
- javascript - HTML上的按钮调用谷歌脚本
- python - 从 pandas .apply 过渡到矢量化方法
- reactjs - React - 更改导入组件的值
- c++ - 如果一个函数不能返回任何东西,应该返回什么?
- vb.net - Webhook - 接收 POST 数据
- python - Python:Selenium 浏览器在后台未完全加载
- c# - ASP.NET - 尝试在 asp.net 网站旁边运行 API
- r - 具有整洁评估的变异变量(符号或字符串)
- java - 您需要在 Dropwizard 中提供 SwaggerBundleConfiguration 的实例
- json - 尝试检查 JSON 字段值是否不为空或未定义时邮递员测试错误