Jupyter笔记本中的变量丢失



在jupyter笔记本中,我从文件中声明一个变量:

with fits.open('mind_dataset/matrix_CEREBELLUM_large.fits') as data:
matrix_cerebellum = pd.DataFrame(data[0].data.byteswap().newbyteorder())

在下面的单元格中,我有两种方法:

neuronal_web_pixel = 0.32 # 1 micron => 10e-6 meters
def pixels_to_scale(df, mind=False, cosmos=False):

one_pixel_equals_micron = neuronal_web_pixel
brain_mask = (df != 0.0)
df[brain_mask] *= one_pixel_equals_micron

return df

def binarize_matrix(df, mind=False, cosmos=False):

brain_Llink = 16.0 # microns
zero_mask = (df != 0)
low_mask = (df <= brain_Llink)
df[low_mask & zero_mask] = 1.0
higher_mask = (df >= brain_Llink)
df[higher_mask] = 0.0

return df

然后我将变量传递给方法,以获得缩放的二进制数据帧:

matrix_cerebellum_scaled = pixels_to_scale(matrix_cerebellum, mind=True)

和:

matrix_cerebellum_binary = binarize_matrix(matrix_cerebellum_scaled, mind=True)

然而,如果我调用"matrix_cerebellum_scaled",现在它指向"matrix.cerebellum_binary",并且我丢失了"matrix-cerebellum_scaled"数据帧。

为什么?我错过了什么?

命名:它们不是方法,而是函数;现在:如果您在函数中修改DataFrame,这些更改仍然会发生在DataFrame上。如果您想要一个新的DataFrame,请将其声明为传入的DataFrame的副本

至少在binarize_matrix()的顶部做:new_df = df.copy()。关于为什么有必要在SO的回答和评论中这样做的更多细节:https://stackoverflow.com/a/39628860/42346

相关内容

  • 没有找到相关文章

最新更新