gpt4 book ai didi

python - 使用列和行索引向量化函数

转载 作者:太空宇宙 更新时间:2023-11-03 14:53:50 26 4
gpt4 key购买 nike

我构建了一个程序,可以从一个数据帧中获取值,并将这些值用作另一个数据帧的输入。df_coordinate 是一个包含 x 和 y 坐标行的数据帧(大小在 0 和 max_size_x 或 max_size_y 之间)。Updated_coordinates 是一个具有屏幕大小的新数据框,它使用坐标和某种欧几里德距离使坐标表示一个区域而不是一个像素。该代码按我的预期工作,但现在速度很慢。我知道矢量化要快得多,并且我尝试尽可能地实现它。然而,我似乎无法找到如何使用使用列和行索引的公式进行矢量化的方法。如您所见,在 .apply 中,我使用 x.name 和 x.index,但是有没有办法更快地实现这一点?

max_size_x = 1080
max_size_y = 720

for index, row in df_coordinate.iterrows():
updated_coordinates = pd.DataFrame(np.zeros((max_size_x, max_size_y))) # to do: maybe empty instead of zeroes, and already delete the ones from attention_max
current_time = df_coordinate.loc[index]
coordinate_x = current_time['x_coordinate']
coordinate_y = current_time['y_coordinate']

# calculate area with Euclidean distance:
updated_coordinates = updated_coordinates.apply(lambda x: 1/ ( np.power((np.sqrt(np.power(x.name-coordinate_x,2) + np.power(x.index-coordinate_y,2))),2)))

最佳答案

我通过在循环之外添加以下内容找到了答案:

df_x = pd.DataFrame(np.zeros((image_size_x, image_size_y))) 
df_x = df_x.apply(lambda x: x.name)
df_y = pd.DataFrame(np.zeros((image_size_x, image_size_y)))
df_y = df_y.apply(lambda x: x.index)

并将 .apply 函数替换为向量:

updated_coordinates = 1/ ( * np.power((np.sqrt(np.power(df_x - gaze_x,2) + np.power(df_y - gaze_y,2))),2))

我检查过,运行速度是原来的十倍以上。

关于python - 使用列和行索引向量化函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45735008/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com