我有一个非常简单的代码如下:
import numpy as np
num_classes = 12
im_pred = np.random.randint(0, num_classes, (224, 244))
img = np.zeros((224, 224, 3))
print(im_pred.shape)
#(224, 244)
print(img.shape)
#(224, 224, 3)
for i in range(num_classes):
img[np.where(im_pred==i), :] = [225, 0, 0]回溯(最近一次调用): 文件"",第2行,在 IndexError:对于大小为224的0轴,索引227超出了界限
x, y = np.where(im_pred==i)
print(np.max(x), np.max(y))
#223 243为什么我要拿到IndexError?就我对np.where的理解而言,返回的索引值应该小于224。
让我知道。我开始怀疑numpy安装是否有问题。
谢谢。
发布于 2018-05-03 03:27:20
问题是,您已经制作了不同大小的img和img_pred:
im_pred.shape == (224, 244)而
img.shape == (224, 224, 3)第二轴有不同的大小。
但是一旦解决了这个问题,就会有一个简单的优化。这里不需要np.where。只需使用直接逻辑索引:
for i in range(num_classes):
img[im_pred == i, 0] = 255注意,我还保留了两个零,因为在构造时使用零初始化数组。
发布于 2018-05-03 03:27:08
不,Numpy不是马车。看看您如何定义im_pred,您正在为大小为224×244的数组绘制一个介于0到11之间的随机整数。因此,它抛出一个错误的原因是244的尺寸对于变量img来说太大了,img只有224乘224乘3。我想你可能是想让两者都有相同的第1维和第2维,就像
img = np.zeros((224,244,3)) https://stackoverflow.com/questions/50146362
复制相似问题