如何解决numpy中的“标量”是什么?
甲NumPy的标量是任何对象,它是一个实例np.generic
或其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)
这个定义来自看源代码的np.isscalar:
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发现了这一点。使用其TAB补全功能,键入
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文档isscalar
也有指向源代码的链接。
解决方法
该文档说明了标量的用途,例如,传统的Python数字(例如float和integer)太原始了,因此需要更复杂的数据类型。
它还说明某些标量(数据类型层次结构);以及标量的几个属性。
但是它从来没有给出确切的定义,确切说明了在Python上下文中标量是什么。
我想对此深究。所以我的问题是,以最简单的方式向我解释什么是pythonic标量。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。