【发布时间】:2013-12-13 17:25:39
【问题描述】:
我有一个函数,它应该采用一维整数数组并将其整形为一个 1x3 数组的二维数组。然后它应该获取每个 1x3 数组并将其转换为 3x1 数组。结果应该是 3x1 数组的二维数组。这是我的功能
def RGBtoLMS(rgbValues, rgbLength): #Method to convert from RGB to LMS
print rgbValues
lmsValues = rgbValues.reshape(-1, 3)
print lmsValues
for i in xrange(len(lmsValues)):
lmsValues[i] = lmsValues[i].reshape(3, 1)
return lmsValues
当我尝试将 1x3 数组更改为 3x1 数组时,问题就出现了。我得到以下输出假设 rgbValues = [14, 25, 19, 24, 25, 28, 58, 87, 43]
[14 25 19 ..., 58 87 43]
[[14 25 19]
[24, 25, 28]
[58 87 43]]
ValueError [on line lmsValues[i] = lmsValues[i].reshape(3, 1)]: could not broadcast input array from shape (3,1) into shape (3)
我怎样才能避免这个错误?
【问题讨论】:
-
当你说 1x3 数组的二维数组时,它的形状是 (n, n, 1, 3) 吗?这里的一个例子可能有助于澄清!
-
主要问题是
lmsValues的每个条目都已经具有指定的形状,因此不允许将某些东西分配给具有不同形状的条目。我同意 @AndyHayden 的观点,但是,您的输入和预期输出的简单示例将有助于回答您的问题。 -
已编辑,现在应该更清楚了
-
我认为“1x3 数组的二维数组”的意思是“形状为
(n, 3)的二维数组”。 @Nick,在numpy中,数组只是一个对象,无论是1d还是2d还是nd。对于列表,如果它是“二维”,我们说“列表列表”,但在 numpy 中,这只是一个“二维数组”。此外,我们仍然不知道您想要的输出是什么样的。
标签: python numpy multidimensional-array reshape