numpy Python脚本在返回语句时挂起

2exbekwf  于 2023-10-19  发布在  Python
关注(0)|答案(1)|浏览(69)

我写了一个脚本来打开、读取和返回保存在本地机器上的.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

说实话我不知道该怎么办我已经改变了变量,但仅此而已。任何帮助将不胜感激。

5m1hhzi4

5m1hhzi41#

解决了!这段代码没有问题,调用这个函数的那一行有问题!
所以基本上我试图获取标签并将它们分成块,挂起的行如下:

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出错,并且需要一段时间才能将其转换为Tensor。

相关问题