我想要将一个列表的每个元素与另一个列表的每个元素相乘。
这种方法是可行的,但在大型数据集中效率非常低下,循环可能需要很长时间才能完成。请注意,这两个列表的长度可能会有所不同。
我可以使用非内置数据结构。我查看了numpy,似乎有一种叫做广播的方法在ndarray中。我不确定是否应该采用这种方法。到目前为止,将数组与标量相乘的结果符合预期。
但是它与另一个数组的工作方式有些不同,我似乎无法实现上述功能。 我想这一定是一些简单的东西,但我目前似乎找不到需要的确切解决方案。 任何输入都将高度赞赏。 谢谢。
顺便说一下,有一个类似的Scheme问题,不考虑效率,在这里。
编辑:感谢您的答案。 乘法有效,请参见Dval的答案。 然而,我也需要以完全相同的方式进行加法和可能的除法。 因此,我稍微更新了一下问题。
编辑:我可以直接使用numpy数组,因此不需要将列表转换为数组再转回来。
lst1 = [1, 2, 1, 2]
lst2 = [2, 2, 2]
lst3 = []
for item in lst1:
for i in lst2:
rs = i * item
lst3.append(rs)
这种方法是可行的,但在大型数据集中效率非常低下,循环可能需要很长时间才能完成。请注意,这两个列表的长度可能会有所不同。
我可以使用非内置数据结构。我查看了numpy,似乎有一种叫做广播的方法在ndarray中。我不确定是否应该采用这种方法。到目前为止,将数组与标量相乘的结果符合预期。
arr = np.arange(3)
arr * 2
这将返回:
array([0, 2, 4])
但是它与另一个数组的工作方式有些不同,我似乎无法实现上述功能。 我想这一定是一些简单的东西,但我目前似乎找不到需要的确切解决方案。 任何输入都将高度赞赏。 谢谢。
顺便说一下,有一个类似的Scheme问题,不考虑效率,在这里。
编辑:感谢您的答案。 乘法有效,请参见Dval的答案。 然而,我也需要以完全相同的方式进行加法和可能的除法。 因此,我稍微更新了一下问题。
编辑:我可以直接使用numpy数组,因此不需要将列表转换为数组再转回来。