我有一个以NBins为参数的函数。我想用标量50或数组[0,10,20,30]调用这个函数。如何在函数中识别NBins的长度?或者换一种说法,它是标量还是向量?

我试了一下:

>>> N=[2,3,5]
>>> P = 5
>>> len(N)
3
>>> len(P)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: object of type 'int' has no len()
>>> 

如你所见,我不能将len应用于P,因为它不是一个数组....python中有isarray或isscalar之类的东西吗?

谢谢


当前回答

Preds_test[0]的形状(128,128,1) 让我们使用isinstance()函数检查它的数据类型 Isinstance接受2个参数。 第一个参数是数据 第二个参数是数据类型 isinstance(preds_test[0], np.ndarray)输出为True。这意味着preds_test[0]是一个数组。

其他回答

另一种替代方法(使用类名属性):

N = [2,3,5]
P = 5

type(N).__name__ == 'list'
True

type(P).__name__ == 'int'
True

type(N).__name__ in ('list', 'tuple')
True

不需要进口任何东西。

你可以检查变量的数据类型。

N = [2,3,5]
P = 5
type(P)

它会给你P的数据类型。

<type 'int'>

这样你就可以区分它是整数还是数组。

Preds_test[0]的形状(128,128,1) 让我们使用isinstance()函数检查它的数据类型 Isinstance接受2个参数。 第一个参数是数据 第二个参数是数据类型 isinstance(preds_test[0], np.ndarray)输出为True。这意味着preds_test[0]是一个数组。

>>> N=[2,3,5]
>>> P = 5
>>> type(P)==type(0)
True
>>> type([1,2])==type(N)
True
>>> type(P)==type([1,2])
False

虽然@jamylak的方法更好,但这里有另一种方法

>>> N=[2,3,5]
>>> P = 5
>>> type(P) in (tuple, list)
False
>>> type(N) in (tuple, list)
True