解决np.random.randint运行时报ValueError: low >= high问题
错误原因
- 你遇到的
ValueError: low >= high中文含义为值错误:下限值大于等于上限值 - 该报错触发自
np.random.randint(0, cells.shape[0], 1),numpy的randint方法要求传入的上限参数必须严格大于下限参数,此处说明你的cells数组第一维度长度为0,也就是数组是空的,导致传入的上限值等于下限值0,不符合参数要求。
解决方法
- 首先排查数据集加载逻辑,确认cells和labels数组是否被正确读取、赋值,可先运行下方代码验证数组长度:
# 调试用代码,确认数组非空 print(f"cells数组样本数:{cells.shape[0]}") print(f"labels数组样本数:{len(labels)}")
如果输出的cells样本数为0,说明数据集读取路径错误、筛选条件错误导致结果为空,需要修正数据加载代码。
- 确认数据集正常后,可对原可视化代码做兼容性修改,避免样本数不足49时也能正常运行,同时修正原代码里的拼写错误(Unifected应为Uninfected):
plt.figure(1 , figsize = (15 , 9)) n = 0 # 取样本数和49的较小值,避免样本不足时报错 sample_count = min(49, cells.shape[0]) for i in range(sample_count): n += 1 r = np.random.randint(0 , cells.shape[0] , 1) plt.subplot(7 , 7 , n) plt.subplots_adjust(hspace = 0.5 , wspace = 0.5) plt.imshow(cells[r[0]]) plt.title('{} : {}'.format('感染' if labels[r[0]] == 1 else '未感染' , labels[r[0]]) ) plt.xticks([]) , plt.yticks([]) plt.show()
内容的提问来源于stack exchange,提问作者Muhammad Muttaqin - I4II7I38
相关产品推荐
相关产品推荐

