NumPy 数据类型

NumPy 支持的数据类型比 Python 内置的类型要多,下表列举了常用 NumPy 基本类型。

表 2.2.1 NumPy 支持的数据类型

名称

描述

bool

布尔型数据类型(True 或者 False)

int

默认的整数类型(类似于 C 语言中的 long,int32 或 int64)

int8

字节(-128 to 127)

int16

整数(-32768 to 32767)

int32

整数(-2147483648 to 2147483647)

int64

整数(-9223372036854775808 to 9223372036854775807)

uint8

无符号整数(0 to 255)

uint16

无符号整数(0 to 65535)

uint32

无符号整数(0 to 4294967295)

uint64

无符号整数(0 to 18446744073709551615)

float

float64 类型的简写

float16

半精度浮点数,包括:1 个符号位,5 个指数位,10 个尾数位

float32

单精度浮点数,包括:1 个符号位,8 个指数位,23 个尾数位

float64

双精度浮点数,包括:1 个符号位,11 个指数位,52 个尾数位

complex

complex128 类型的简写,即 128 位复数

complex64

复数,表示双 32 位浮点数(实数部分和虚数部分)

complex128

复数,表示双 64 位浮点数(实数部分和虚数部分)

NumPy ndarray对象
NumPy 内包含一个常用的对象 ndarray (N-dimension array),也是存储和变换数据的主要⼯具,特点是具有 N 维数组,是一系列同类型数据的集合,以 0 为下标索引。ndarray 具有以下特性:

  • 是用于存放同类型元素的多维数组。
  • 每个元素在内存中都有相同存储大小的区域。

NumPy 数组 (array) 的维度 (dimesions) 称为秩(rank),秩就是轴(axis)的数量,即数组的维度,一维数组的秩为 1,二维数组的秩为 2,以此类推。

在 NumPy中,每一个线性的数组称为是一个轴,也就是一个维度。比如说,二维数组相当于是两个一维数组,其中第一个一维数组中每个元素又是一个一维数组。所以一维数组就是 NumPy 中的轴(axis),第一个轴相当于是底层数组,第二个轴是底层数组里的数组。而轴的数量——秩,就是数组的维数。行为水平的,如同平面坐标的 Y 轴,列为垂直的,如同平面坐标的 X 轴。

NumPy 的数组中比较重要 ndarray 对象属性有:

属性

说明

ndarray.ndim

秩,即轴的数量或维度的数量

ndarray.shape

数组的维度,对于矩阵,n 行 m 列

ndarray.size

数组元素的总个数,相当于 shape 中 n*m 的值

ndarray.dtype

ndarray 对象的元素类型

ndarray.itemsize

ndarray 对象中每个元素的大小,以字节为单位

ndarray.flags

ndarray 对象的内存信息

ndarray.real

ndarray元素的实部

ndarray.imag

ndarray 元素的虚部

ndarray.data

包含实际数组元素的缓冲区,由于一般通过数组的索引获取元素,所以通常不需要使用这个属性。

我门透过以下例子来说明说明轴、维度与秩的关系,底下我们建立一个二维数组,大小为 3 * 2 ( 3 行,2 列),而所谓的 轴 0,就是针对每一行进行操作,轴 1 ,就是针对每一列进行操作,比较简单的判断方法就是 shape 的第 1 的数就是 axis 0,第 2 的数就是 axis 1。

 

 

1

2

3

4

5

6

实例

import numpy as np 
# 创建一个 3*2 的数组
a = np.array([[1, 2],  [3, 4], [5, 6]])
a
# 显示 ndarray 的形状
a.shape
# 显示 ndarray 轴的数量或维度的数量
a.ndim
# 对 轴 0 进行加总
a.sum(axis=0)
# 对 轴 1 进行加总
a.sum(axis=1)

运行结果如下图所示, ndarray.shape 中的呈现方式是 行 * 列。

ndarray获取值的索引 ndarray类型_ndarray获取值的索引

圖 2-2-1 ndarray的基本操作