提问人:asingh 提问时间:9/21/2023 更新时间:9/21/2023 访问量:49
Python 脚本在 return 语句上挂断
Python script hung up on return statement
问:
我编写了一个脚本来打开、读取和返回保存在本地计算机上的 .npy 文件中的 numpy 数组。我之前已经做过很多次了,但是由于某种原因,我这次的脚本似乎挂在了return语句上。它打开、读取和关闭 npy 文件,将其保存在局部变量上,但是当函数应该返回数组时,它就会挂起,我不得不关闭程序。我已经通过在 VSCode 中调试并单步执行每一行来验证它是否在 return 语句上挂断。
if label == 0 or label == 1:
print('Opening Label 1 arrays..')
with open(f'npys\\labels\\label1.npy', 'rb') as f:
label1 = np.load(f)
if label == 1:
return label1
if label == 0 or label == 2:
print('Opening Label 2 centroid arrays..')
with open(f'npys\\labels\\label2.npy', 'rb') as f:
label2 = np.load(f)
if label == 2:
return label2
if label == 0 or label == 3:
print('Opening Label 3 arrays..')
with open(f'npys\\labels\\label3.npy', 'rb') as f:
label3 = np.load(f)
if label == 3:
return label3
if label == 0 or label == 4:
print('Opening Label 4 arrays..')
with open(f'npys\\labels\\label4.npy', 'rb') as f:
label4 = np.load(f)
if label == 4:
return label4
return label1, label2, label3, label4
老实说,我不知道该怎么做。我已经移动了变量,但仅此而已。任何帮助将不胜感激。
答:
-2赞
asingh
9/21/2023
#1
解决!这个代码块没有问题,调用这个函数的行有问题!
所以基本上我试图获取标签并将它们分成块,挂断的行如下:
self.labels = torch.tensor(np.split(get_labels(label_num), num_frames))
我通过将其更改为以下内容来解决这个问题:
self.labels = torch.from_numpy(np.array(np.split(get_labels(label_num), num_frames)))
由于 np.split 返回一个 np 数组列表,我想异构列表绊倒了 pytorch,并且需要一段时间才能将其转换为张量。
评论
def readlabels(numlabel):
label1
.npy