len()与numpy数组上的__len__进行比较

时间:2014-10-20 22:17:50

标签: python python-2.7 numpy

这里发生了什么?如何检查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 个答案:

答案 0 :(得分: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])