python - 声明变量的内存与在函数调用中定义变量时的内存

标签 python pandas memory

所以我有一个一般性问题,但由于我是用 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为了使用它,因此使用两倍的内存(dfdf.T都存储在内存中),直到计算完成。

我是对的还是这到底是如何完成的?

最佳答案

在这两种情况下,都会计算df.T(无论如何都会发生这种情况)。唯一的区别是,在第一个代码中,结果绑定(bind)到 cosine_similarity 参数,而在第二个代码中,结果绑定(bind)到当前范围内的名称 df。在这两种情况下,pd.DataFrame 的结果都会绑定(bind)到 df

内存使用的唯一区别是 df 的原始值被垃圾收集时(如果有的话),因为您的第一个代码重新分配 df 晚于第二个代码。

关于python - 声明变量的内存与在函数调用中定义变量时的内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58186238/

相关文章:

python - 合并避免重复的列,但只保留一个重复的列

python - 带 shell 完成的 pip install

pandas - 划分两只 Pandas 系列

c - 类似于 scanf 的函数中的内存泄漏问题

python - 在python中将FFT绘制为一组正弦波?

python - 某些列的唯一值,DF pandas

python - 使用 Pandas 以迭代方式将列添加到 Dataframe

java - ArrayList 的内存分配如何工作?

将 char 数组复制到另一个 char 数组而不发生内存泄漏

python - tf.random.Normal() 不生成不同的值