numpy数组中len()与__len__()的比较
这里发生了什么?我怎么能检查一下 a
的长度呢?
>>> import numpy as np
>>> a = np.array(3)
>>> hasattr(a , '__len__')
True
>>> len(a)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: len() of unsized object
在这里,Python认为 a
是没有长度的:
>>>a.shape
()
我正在使用 Python 2.7.3 和 numpy 1.8.0。
谢谢。
1 个回答
1
嗯,也许我这里有点理解错了,但你为什么不检查一下类型呢?
import numpy as np
def make_ary(item):
if not isinstance(item, list):
ary = np.array([item])
else:
ary = np.array(item)
ary = ary.ravel()
return ary
然后:
a = [1,2,3]
b = 3
c = [ [1] , [2] ,[3] ]
>> make_ary(a)
array([1, 2, 3])
>> make_ary(b)
array([3])
>> make_ary(c)
array([1, 2, 3])