【发布时间】:2019-11-05 09:35:01
【问题描述】:
我有一个 Python 脚本,它使用 pandas 数据帧,它通过转换另一个数据帧的元素来填充一个数据帧。我可以使用简单的 for 循环或 itertuples 来完成,但我想看看是否可以对其进行矢量化以获得最大速度(我的数据帧非常大,~60000x12000)。
这是我正在尝试做的一个示例:
#Sample data
sample_list=[1,2,5]
我有一个与上面类似的值列表。我的新矩阵中的每个元素都是该列表中某些两个元素的总和除以常数 n。
new_matrix[row,col]=(sample_list[row]+sample_list[col])/n
所以 n=2 的预期输出是:
1 1.5 3
1.5 2 3.5
3 3.5 5
现在我使用 for 循环执行此操作,遍历空矩阵的每个元素并将它们设置为公式计算的值。有什么方法可以对这个操作进行矢量化(即类似new_matrix=2*old_matrix 而不是
for row, col in range(): new_matrix[row,col]=2*old_matrix[row,col]?
【问题讨论】:
-
你试过
new_matrix=2*old_matrix吗?发生了什么?这通常是正确的方法。如果您发布一个最小的相同输入数据集和预期的输出结果供我们使用,这将有很大帮助。 -
new_matrix=2*old_matrix不是我的公式,我的意思是将其作为矢量化的示例。我试图向量化的公式是第二个代码块。我会用预期的输出更新我的帖子。
标签: python pandas performance numpy vectorization