NumPy标量是^{}的实例或type位于np.ScalarType中的任何对象:In [12]: np.ScalarType
Out[13]:
(int,
float,
complex,
long,
bool,
str,
unicode,
buffer,
numpy.int16,
numpy.float16,
numpy.int8,
numpy.uint64,
numpy.complex192,
numpy.void,
numpy.uint32,
numpy.complex128,
numpy.unicode_,
numpy.uint32,
numpy.complex64,
numpy.string_,
numpy.uint16,
numpy.timedelta64,
numpy.bool_,
numpy.uint8,
numpy.datetime64,
numpy.object_,
numpy.int64,
numpy.float96,
numpy.int32,
numpy.float64,
numpy.int32,
numpy.float32)def isscalar(num):
if isinstance(num, generic):
return True
else:
return type(num) in ScalarType
注意,您可以使用np.isscalar来测试某个东西是否是标量:>>> np.isscalar(3.1)
True
>>> np.isscalar([3.1])
False
>>> np.isscalar(False)
True
我们怎么知道自己知道什么?
我喜欢学习人们如何知道他们所知道的,而不是他们自己的答案。所以让我试着解释一下上面的答案是从哪里来的。
拥有正确的工具可以帮助你自己解决这样的问题。
我是用IPython找到这个的。使用它的制表符完成功能,键入In [19]: import numpy as np
In [20]: np.[TAB]
使IPython显示np模块命名空间中的所有变量。搜索字符串"scalar"将指向np.ScalarType和np.isscalar。打字In [20]: np.isscalar?
(注意末尾的问号)提示IPython显示定义np.isscalar的位置:File: /data1/unutbu/.virtualenvs/dev/lib/python2.7/site-packages/numpy/core/numeric.py
这就是我如何定义isscalar。或者,numpy documentation for ^{}也有到源代码的链接。