7.2 NumPy数组

7.2.1 NumPy 数值类型

NumPy支持的数值类型比Python多得多。本节展示哪些可用,以及如何修改数组的数据类型。

所支持的基本类型与C语言中的基本类型紧密相连:

由于其中许多具有平台相关的定义,因此提供了一组固定大小的别名:

有5种基本的数值类型表示布尔值(bool)、整数(int)、无符号整数(uint)浮点数(float)和复数。这些数值对象类型中,有5种最基本的数值类型,分别是布尔(bool)、整数(int)、无符号整数(uint)、浮点数(float)和复数。

NumPy中的数据类型名称也是数据类型的构造函数的名称:

[]:x_1=np.int(1)

x_2=np.float32([1.0, 2.17, 3.14])

x_1, x_2

[]:(1, array([1. , 2.17, 3.14], dtype=float32))

可以使用arange函数来创建整数列:

[]:x_3=np.arange(4, dtype=np.uint8)

x_3

[]:array([0, 1, 2, 3], dtype=uint8)

dtype为创建的数值类型。

可以使用. .astype()方法或类型本身作为函数来对数组类型进行转换:

[]:x_3.astype(float) #将整型数组x_3转换为浮点数组x3

[]:array([0., 1., 2., 3.])

要确定数组的类型,可以查看dtype属性:

>>> z.dtype

dtype('uint8')

NumPy包含几个常量:

NumPy使用IEEE二进制浮点运算标准(IEEE 754)。这意味着没有一个数不等于无穷大。正无穷不等于负无穷。但是无穷大等于正无穷大。

电气电子工程师学会(IEEE)的英文全称是the Institute of Electrical and Electronics Engineers,其前身是成立于1884年的美国电气工程师协会(AIEE)和成立于1912年的无线电工程师协会(IRE)。前者主要致力于有线通讯、光学以及动力系统的研究,而后者则是国际无线电领域不断扩大的产物。20世纪30年代,“电子学”这个词开始进入工程学词典。虽然许多工程师都同时是AIEE和IRE两个协会的会员,但是新入行的电子工程师们还是更倾向于加入无线电工程师协会。两个协会之间激烈的竞争的结果,造就了双方的合作与合并。1963年,AIEE和IRE宣布合并,电气电子工程师学会(IEEE)正式成立了。

作为全球最大的专业技术组织,在电气及电子工程、计算机、通信等领域中,IEEE 发表的技术文献占到了全球同类文献的百分之三十。同时IEEE每年还结集出版电气工程、通讯、计算机理论及方法领域的专业技术期刊,数量达140余册。配合各专业技术领域的学术交流活动,IEEE还提供学报、技术通讯、会议论文集和会刊等约700余种出版物。

如今,随着电子信息和其他相关技术的不断发展和演进,以及会员职业范围的扩大和技术兴趣的不断增长,IEEE也将其关注点不断扩充至其他新兴领域。IEEE将努力帮助其会员跟上并引领新技术发展步伐,制定国际和行业标准,并激励新一代专业技术人员架构并融入全球技术协作团队。更重要的是,随着会员所在地域范围的扩大,IEEE已经日趋全球化,并通过其会员的全球化,在航空航天、生物科技、计算机工程、新能源、地理信息系统、神经网络、无线通信等高科技领域的技术发展上走在了前沿。

7.2.2 ndarray类型

NumPy中核心数据对象类型是ndarray类型,也就是N-维数组对象。可以使用array()函数来创建ndarray对象:

[]: x = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])

x

[]:array([[1, 2, 3],

[4, 5, 6],

[7, 8, 9]])

使用ndarray的shape属性查看数组的形状

[]:x.shape

(3, 3)

若想创建特定数据类型的ndarray对象,可以将对象类型传入构造函数:

[]:x=np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]], np.float)

x

[]:array([[1., 2., 3.],

[4., 5., 6.],

[7., 8., 9.]])

使用type()函数产看x的类型:

[]:type(x)

[]:numpy.ndarray

除了使用array函数来创建,也可以使用更底层的ndarray()构造函数来创建由固定大小的项组成的多维齐次数组。

[]:np.ndarray(shape=(4, 3), dtype=float)

[]:array([[1.047e-321, 0.000e+000, 0.000e+000],

[0.000e+000, 0.000e+000, 0.000e+000],

[0.000e+000, 0.000e+000, 0.000e+000],

[0.000e+000, 0.000e+000, 0.000e+000]])

Last updated