Python TypeError:/:';列表';和';长';
我将数据分为两类,然后我将计算平均向量,但我得到以下错误。但是,当我将[3,7]更改为[3,1]时,问题将得到解决!!!有人能帮我吗?先谢谢你Python TypeError:/:';列表';和';长';,python,numpy,Python,Numpy,我将数据分为两类,然后我将计算平均向量,但我得到以下错误。但是,当我将[3,7]更改为[3,1]时,问题将得到解决!!!有人能帮我吗?先谢谢你 Traceback (most recent call last): File "ao.py", line 36, in <module> (r,d,u)=update(clusters) File "ao.py", line 30, in update c=np.mean(d, axis=0) File "E:\
Traceback (most recent call last):
File "ao.py", line 36, in <module>
(r,d,u)=update(clusters)
File "ao.py", line 30, in update
c=np.mean(d, axis=0)
File "E:\Python27\lib\site-packages\numpy\core\fromnumeric.py", line 2716, in
mean
out=out, keepdims=keepdims)
File "E:\Python27\lib\site-packages\numpy\core\_methods.py", line 69, in _mean
ret = ret / rcount
TypeError: unsupported operand type(s) for /: 'list' and 'long'
np.mean
可用于表示为列表的数组,例如:
np.mean([[1],[4],[6]])
但是,它不适用于形状不规则的阵列,例如:
np.mean([[1, 2],[4],[6]])
这就是问题所在,因为变量d
内部函数a
看起来像:
[[array([ 5. , 7. ]), array([ 3., 7.])],
[array([ 3.5, 5. ]) ],
[array([ 3.5, 4.5]) ],
[array([ 5. , 8. ]) ]]
我认为您需要找到更好的方法来组织数据。正如错误所说,
ret
或rcount
是一个列表。numpy.mean
需要一个数组。你给了它一个列表。好吧,但是为什么当我在X中将[3,7]更改为[3,1]时,我没有得到任何错误,并且它计算了平均值。我认为问题在于列表[3,7]
会导致一个空的d
列表。你可以检查一下吗?这个问题与变量d有关在计算平均向量之前,r&d是这样的:r:[[array([2,3.]),[array([1.5,2.]),[array([3,4.]),[array([1,1.]),[array([5,1.])]d:[[array([5,7.]),[array([3,7.]),[array([3.5,5.]),[array([3.5,4.5]),[array([3.5,4.5]),[array([5]),[5]),[8])]----程序正在计算np.mean(r,axi=0),无误。因此,问题与d@user3616059:是的,这就是我要说的:数组d
不是矩形的,这会导致错误。
[[array([ 5. , 7. ]), array([ 3., 7.])],
[array([ 3.5, 5. ]) ],
[array([ 3.5, 4.5]) ],
[array([ 5. , 8. ]) ]]