所以我有一个一般性问题,但由于我是用 Python 编写的,所以它是标签。
假设我有df
这是一个 pandas 数据框 - 我通常会这样做:
df=pd.DataFrame(data = cosine_similarity(df.T))
而不是
df=df.T
df = pd.DataFrame(data = cosine_similarity(df))
但后来我想:如果内存是问题(而不是速度),那么第二种方法会优于第一种方法吗?我假设cosine_similarity
必须计算df.T
为了使用它,因此使用两倍的内存(df
和df.T
都存储在内存中),直到计算完成。
我是对的还是这到底是如何完成的?
最佳答案
在这两种情况下,都会计算df.T
(无论如何都会发生这种情况)。唯一的区别是,在第一个代码中,结果绑定(bind)到 cosine_similarity
参数,而在第二个代码中,结果绑定(bind)到当前范围内的名称 df
。在这两种情况下,pd.DataFrame
的结果都会绑定(bind)到 df
。
内存使用的唯一区别是 当 df
的原始值被垃圾收集时(如果有的话),因为您的第一个代码重新分配 df
晚于第二个代码。
关于python - 声明变量的内存与在函数调用中定义变量时的内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58186238/