我正在尝试此代码进行聚类,调整如下:
import os
os.chdir("C:/path/to/working/directory")
import numpy as np
Dist = np.load('20240612.1201_Dist.npz')['Dist'] # Load distance matrix
Dist.shape # 30,011 x 30,011 # Check that matrix shape is square
from scipy.cluster.hierarchy import fclusterdata
t=3 # The maximum distance
y_pred = fclusterdata(Dist.T, t, criterion='distance')
# Used transpose to convert lower triangular data to upper triangular
# import datetime as dt # Unfortunately, this was missing !!!!!!
# Where the error occurred
print( dt.datetime.now(), ": Finished ",
os.path.basename(__file__), sep='' )
问题是我将文本文件中的代码片段复制并粘贴到 Spyder 控制台中,所以我缺少一个
import datetime as dt
。 它在代码末尾用于打印完成时间,并且由于我记下了开始时间,所以我可以确定需要多长时间。
当我将代码粘贴到 Spyder 控制台时,Windows 任务管理器显示 Python 进程正在崩溃。 由于我必须离开,所以我让进程继续运行。 当我早上来的时候,我看到了缺少
datetime
模块的错误:
Traceback (most recent call last):
Cell In[1], line 12
print( dt.datetime.now(), ": Finished ",
NameError: name 'dt' is not defined
我很失望地发现在错误代码之前发生的所有对象都没有显示在 Spyder 的变量资源管理器中,例如
t
、y_pred
。 它们存在于命名空间中,并且也显示为 dir()
:
>>> t
Out[3]: 3
>>> y_pred
Out[4]: array([ 4184, 29948, 4185, ..., 20769, 20751, 20752], dtype=int32)
>>> dir()
Out[5]:
['Dist',
<...snip...>
't',
'y_pred']
单击变量资源管理器上的“刷新”不会更改任何内容。 有没有办法强制Spyder重新获取变量资源管理器的内容?
我在 Windows 10 上使用 Anaconda 的 Spyder 5.4.3。
后注: 即使像
t=t
、x=t
和 x=5
这样简单的事情也不会导致变量资源管理器发生变化。 在错误发生之前这不是问题。
基于这个答案,我尝试切换
Tools > Preferences > Variable explorer
下的一些复选框。 这“唤醒”了变量浏览器。 它不仅显示新变量,而且在为它们分配新值时显示它们已更新。
虽然我引用了具有类似症状的问答,但情况有所不同。