第六节.标量
Python只定义了一种特定的数据类(只有一种整数类型,一种浮点类型等)。在不需要关心数据在计算机中表示的所有方式的应用中,这可以是方便的。但是,对于科学计算而言,通常需要更多的控制。
在NumPy中,有24种新的基本Python类型来描述不同类型的标量。这些类型描述符大多基于CPython编写的C语言中可用的类型,还有几个与Python类型兼容的其他类型。
数组标量具有与ndarray相同的属性和方法。 [这使得可以将数组中的项与数组部分放在同一基础上,从而平滑混合标量和数组操作时产生的粗糙边。
数组标量存在于数据类型的层次结构中(请参见下图)。可以使用层次结构检测它们:例如,如果val是数组标量对象,则isinstance(val,np.generic)将返回True。或者,可以使用数据类型层次结构的其他成员来确定存在哪种类型的数组标量。因此,例如,如果val是一个复数值类型,则isinstance(val,np.complexfloating)将返回True,而如果val是灵活的itemsize数组类型之一,则isinstance(val,np.flexible)将返回true(string,unicode,无效)。
图:表示数组数据类型的类型对象的层次结构。 不显示两个整数类型intp和uintp,它们只是指向包含平台指针的整数类型。 所有的数字类型都可以使用位宽名称来获取。
数组标量是不变的,因此没有一个数组标量属性是可以设定的。
1.内置标量类型
内置的标量类型如下所示。 除了它们(主要是)C派生的名称之外,整数,浮点数和复数数据类型也可以使用位宽约定,以便始终可以确保正确大小的数组(例如int8,float64,complex128)。 还提供了两个别名(intp和uintp),指向足够大以容纳C指针的整数类型。 类似C的名字与字符代码相关联,显示在表中。 不鼓励使用字符代码。
一些标量类型基本上等同于基本的Python类型,因此从它们继承,以及从通用数组标量类型继承:
数组标量类型 | 相关的Python类型 |
---|---|
int_ |
IntType (仅仅在Python2里面有) |
float_ |
FloatType |
complex_ |
ComplexType |
bytes_ |
BytesType |
unicode_ |
UnicodeType |