一、认识NumPy数组对象
NumPy中最重要的一个特点就是其N维数组对象,即ndarray(别名array)对象,该对象可以执行一些科学计算。
属性 | 具体说明 |
ndarray.ndim | 维度个数,也就是数组轴的个数,比如一维、二维、三维等 |
ndarray.shape | 数组的维度。这是一个整数的元组,标识每个维度上数组的大小。例如,一个n行和m列的数组,它的shape属性为(n,m) |
ndarray.size | 数组元素的总个数,等于shape属性中元组元素的乘积 |
ndarray.dtype | 描述数组中元素类型的对象,既可以使用标准的Python类型创建或指定,也可以使用NumPy特有的数据类型来指定,比如numpy.int32、numpy.float64等 |
ndarray.itemsize | 数组中每个元素的字节大小。例如,元素类型为float64的数组有8(64/8)个字节,这相当于ndarray.dype.itemsize |
二、创建NumPy数组
最简单的创建ndarray对象的方式是使用array()函数,在调用该函数时传入一个列表或者元组。
# 创建一个一维数组
data1 = np.array([1, 2, 3])
# 创建一个二维数组
data2 = np.array([[1, 2, 3], [4, 5, 6]])
通过zeros()函数创建元素值都是0的数组;通过ones()函数创建元素值都为1的数组。
# 创建元素值全是0的数组
np.zeros((3, 4))
# 创建元素值全是1的数组
np.ones((3, 4))
通过empty()函数创建一个新的数组,该数组只分配了内存空间,它里面填充的元素都是随机的。
# 创建元素值全是随机数的数组
np.empty((5, 2))
通过arange()函数可以创建一个等差数组,它的功能类似于range(),只不过arange()函数返回的结果是数组,而不是列表。
np.arange(1, 20, 5)
三、ndarray对象的数据类型
查看数据类型
ndarray.dtype可以创建一个表示数据类型的对象,如果希望获取数据类型的名称,则需要访问name属性进行获取。
data_one = np.array([[1, 2, 3], [4, 5, 6]])
data_one.dtype.name
NumPy的数据类型是由一个类型名和元素位长的数字组成。
NumPy中常用的数据类型
数据类型 | 含义 |
bool | 布尔类型,值为True或者False |
int8、uint8 | 有符号和无符号的8位整数 |
int16、uint16 | 有符号和无符号的16位整数 |
int32、uint32 | 有符号和无符号的32位整数 |
int64、uint64 | 有符号和无符号的64位整数 |
float16 | 半精度浮点数(16位) |
float32 | 半精度浮点数(32位) |
float64 | 半精度浮点数(64位) |
complex64 | 复数,分别用两个32位浮点数表示实部和虚部 |
complex128 | 复数,分别用两个64位浮点数表示实部和虚部 |
object | Python对象 |
string_ | 固定长度的字符串类型 |
Unicode | 固定长度的Unicode类型 |
每一个NumPy内置的数据类型都有一个特征码,它能唯一标识一种数据类型。
特征码 | 含义 |
b | 布尔型 |
u | 无符号整型 |
c | 复数类型 |
S,a | 字节字符串 |
V | 原始数据 |
i | 有符号整型 |
f | 浮点型 |
O | Python对象 |
U | Unicode字符串 |
转换数据类型
ndarray对象的数据类型可以通过astype()方法进行转换。
data = np.array([[1, 2, 3], [4, 5, 6]])
data.dtype
# 数据类型转换为float64
float_data = data.astype(np.float64)
float_data.dtype