处理 4 维数组 python
Handle 4 dimensional array python
我想创建一个包含 10 个矩阵 (32,32,3) 的列表,其中包含来自我的 RGB 图像的值的总和。
所以我用了matrixSum = np.zeros((10,32,32,3),np.uint64)
我想使用 matrixSum[indiceClass][ligne][col][rgb]
访问它
但是我一直有一个错误告诉我 matrixSum[indiceClass] 只有大小 1
所以我将我的代码更改为 matrixSum[indiceClass][0][ligne][col][rgb]
,我不再有这个错误,但它给我带来了麻烦。
我做错了什么吗?它不明白为什么我会在中间有一个大小为 1 而不是 32 的数组。还是合乎逻辑?
这是该函数的完整代码:(indiceclasse 只会在 0 和 9 之间)
def createMatrixSum(data, nbImagesParClasse):
matricesSum = np.zeros((10,32,32,3),np.uint64)
indiceClasse = 0
for i in range(0,80):
indiceClasse = data["y"][i]
indiceClasse -= 1;
nbImagesParClasse[indiceClasse] += 1
for ligne in range(32):
for col in range(32):
for rgb in range(3):
matricesSum[indiceClasse][ligne][col][rgb] += data["X"][ligne,col,rgb,i]
return matricesSum, nbImagesParClasse
编辑:这是错误前我的 data/matrix 的长度和形状。
我没有看到任何错误。
嗯,原来我试图获得的 "indiceClass" 不是我想的整数,而是一个大小为 1 的列表。
所以使用它作为索引在我的矩阵中添加了另一个列表,这解释了为什么我将该列表放在中间。应该事先检查一下。
我想创建一个包含 10 个矩阵 (32,32,3) 的列表,其中包含来自我的 RGB 图像的值的总和。
所以我用了matrixSum = np.zeros((10,32,32,3),np.uint64)
我想使用 matrixSum[indiceClass][ligne][col][rgb]
访问它
但是我一直有一个错误告诉我 matrixSum[indiceClass] 只有大小 1
所以我将我的代码更改为 matrixSum[indiceClass][0][ligne][col][rgb]
,我不再有这个错误,但它给我带来了麻烦。
我做错了什么吗?它不明白为什么我会在中间有一个大小为 1 而不是 32 的数组。还是合乎逻辑?
这是该函数的完整代码:(indiceclasse 只会在 0 和 9 之间)
def createMatrixSum(data, nbImagesParClasse):
matricesSum = np.zeros((10,32,32,3),np.uint64)
indiceClasse = 0
for i in range(0,80):
indiceClasse = data["y"][i]
indiceClasse -= 1;
nbImagesParClasse[indiceClasse] += 1
for ligne in range(32):
for col in range(32):
for rgb in range(3):
matricesSum[indiceClasse][ligne][col][rgb] += data["X"][ligne,col,rgb,i]
return matricesSum, nbImagesParClasse
编辑:这是错误前我的 data/matrix 的长度和形状。
我没有看到任何错误。
嗯,原来我试图获得的 "indiceClass" 不是我想的整数,而是一个大小为 1 的列表。 所以使用它作为索引在我的矩阵中添加了另一个列表,这解释了为什么我将该列表放在中间。应该事先检查一下。