猿问

如何在 numpy pandas 的两个列表上应用 np.dot 函数

我有两个不同的列表,我必须在 python 中应用 numpy 的 np.dot 函数,我该怎么做?


列表1=


array([[      nan,       nan],

       [ 0.000829,  0.000326],

       [-0.000149, -0.00033 ],

       ...,

       [-0.000757, -0.000737],

       [-0.000795, -0.00068 ],

       [-0.000788, -0.00069 ]])

列表 2 =


array([[      nan,       nan],

       [      nan,       nan],

       [-0.000829, -0.000326],

       ...,

       [ 0.000763,  0.000738],

       [ 0.000757,  0.000737],

       [ 0.000795,  0.00068 ]])

这是两个单独的列表列表


所以我想这样做:


np.dot([-0.000149, -0.00033 ], [-0.000829, -0.000326])

所以就像


np.dot(list1[3], list2[3])

它继续从一个列表中选择一个索引,从另一个列表中选择一个索引,这应该返回一维数组,问题是数据,它在两个单独的列表中,所以我需要一个列表中的一个索引和一个索引另一个列表,我知道它可以通过循环完成,但不确定这怎么可能,


我希望现在清楚了


森栏
浏览 220回答 1
1回答

长风秋雁

所以你的问题实际上是关于如何遍历列表并调用np.dot每个对应的对。这是一种方法,使用列表理解和zip:>>> import numpy as np>>> list1 = np.array([[1,2],[3,4]])>>> list2 = list1.copy()>>> list_of_results = [np.dot(a,b) for a,b in zip(list1, list2)]>>> list_of_results[5, 25]如果你不熟悉列表理解,我建议你查一下。但是你也可以用一个简单的 for 循环来做到这一点:assert list1.shape == list2.shape, "List shapes do not match"results = []for inner_list_index in range(list1.shape[0]):    a = list1[inner_list_index]    b = list2[inner_list_index]    res = np.dot(a,b)    results = results.append(res)这可以减少到更少的行:>>> assert list1.shape[0] == list2.shape[0]>>> results = []>>> for i in range(list1.shape[0]):...     results.append(np.dot(list1[i], list2[i]))...>>> results[5, 25]请注意,这两种方法都返回一个 normal list,而不是一个 numpy ndarray。这是因为附加到 numpy 数组通常不会太快。你可以用np.append()。或者np.array(),如果您再次需要它作为 np 数组,则仅适用于结果。
随时随地看视频慕课网APP

相关分类

Python
我要回答