N维数组对象:ndarray
ndarray是一个多维数组对象,由两部分构成:
• 实际的数据
• 描述这些数据的元数据(数据维度、数据类型等)
ndarray数组一般要求所有元素类型相同(同质),数组下标从0开始。轴(axis): 保存数据的维度;秩(rank):轴的数量。
数组的创建方法
- 从Python中的列表、元组等类型创建ndarray数组
x = np.array(list/tuple) # x = np.array([0,1,2,3]) #从列表类型创建
x = np.array(list/tuple, dtype=np.float32) # x = np.array((0,1,2,3)) #从元组类型创建, 还可混合创建
- 使用NumPy中函数创建ndarray数组,如:arange, ones, zeros等
import numpy as np
a = np.ones((3,4)) #一个3行4列二维数组
print(a)
[[1. 1. 1. 1.]
[1. 1. 1. 1.]
[1. 1. 1. 1.]]
a = np.ones((2,3,4)) #三维数组,即两个元素,每个元素3行4列数组
print(a)
[[[1. 1. 1. 1.]
[1. 1. 1. 1.]
[1. 1. 1. 1.]]
[[1. 1. 1. 1.]
[1. 1. 1. 1.]
[1. 1. 1. 1.]]]
a = np.linspace(1,10,4) # 从1到10等间距的生成4个数,默认浮点数
b = np.linspace(1,10,4,endpoint=False) # 从1到10(但10不在数组内)等间距的生成4个数
数组的变换
对于创建后的ndarray数组,可以对其进行维度变换和元素类型变换。
注意哪些操作改变原数组,哪些不改变元数据。
new_a = a.astype(new_type): astype()方法一定会创建新的数组(原始数据的一个拷贝),即使两个类型一致
ndarray数组向列表的转换: ls = a.tolist()
数组的操作(索引和切片)
索引:获取数组中特定位置元素的过程
多维数组的索引:a[1, 2, 3] #表示第1个元素,第3行,第4列,从0开始
x[1, 2, 4] #每个维度一个索引值,用逗号分割
切片:获取数组元素子集的过程
x[1 : 4 : 2] # 3元素冒号分割:起始编号: 终止编号(不含): 步长
a = np.arange(24).reshape((2,3,4))
a[:, 1, -3] # 不关心第一个维度,选择第二维度的1行,第三维度的-3列
a[:, 1:3, :] # 只对第二维度进行切片。第二个维度选取1-3行,但不包括3,其他维度不考虑
a[:, :, ::2] # 对于第三个维度使用步长跳跃切片。
data[:,:-1] # 二维数组,返回全部除了最后一列
data[:,-1] # 二维数组,只返回最后一列,注意两个切片的选取,有无冒号
数组的运算