- 数组属性
- 切片索引
数组属性
Numpy 主要的对象是同质多维数组或者矩阵(所有元素的类型都相同)
维度称为 轴 axis
- axis 0 行
- axis 1 列
轴的数目 rank
属性 | 返回类型 | 说明 |
ndim | int | 数组的维度 |
shape | tuple | 数组的尺寸 例如:对于n行m列的矩阵,形状为(n,m) |
size | int | 数组元素总数,等于数组形状的乘积n*m |
dtype | data-type | 描述数组中的类型 |
itemsize | int | 数组的每个元素的大小(以字节为单位) |
切片索引
一维数组
与列表切片完全一致
data = np.arange(1,4)
#array([1,2,3])
data
#1 2 3
data[0]
#1
data[1]
#2
data[0:2]
#1 2
#不包含data[2]
data[1:]
#2 3
#data[1]之后的所有数据
多维数组
例子1
data = np.arange(1,7).reshape(3,2)
array([[1, 2],
[3, 4],
[5, 6]])
data[0,1]
#2
#第0行第1列
data[1:3]
#3 4
#5 6
#第1行第2行 所育的列
data[0:2,0]
#1
#3
#第0行第1行 第0列
例子2
data = np.arange(10).reshape(2,5)
array([[0, 1, 2, 3, 4],
[5, 6, 7, 8, 9]])
data[0]
#array([0, 1, 2, 3, 4])
data[1]
#array([5, 6, 7, 8, 9])
data[0,1]
#1
data[0,::2]
#array([0, 2, 4])
例子3
c = np.arrange(12).reshape(3,4)
array([[0,1,2,3],
[4,5,6,7],
[8,9,10,11]])
c[:2,1:3]
array([[1,2],
[5,6]])
c[:2][1:3]
array([[4,5,6,7]])
#c[:2],会返回c数组的前两行,将得到一个新的数组
#[1:3],前一部的新数组中的第一行和第二行
#所以最后只剩下了原来的第一行
A[m,n]
m,n直接为数字时,定位对应的坐标
m,n为[:x,:y],先按行截取,再按列截取
例子4
array([[0,1,2,3],
[4,5,6,7],
[8,9,10,11]])
c[1,:]
array([4,5,6,7])
c[1:2,:]
array([4,5,6,7])
c[:,1]
array([1,5,9])
c[:,1:2]
array([[1],
[5],
[9]])
与list的一个小区别
List形成的字列表,修改不会修改原数据值
L=[1,2,3,4,5]
M = L[:]
# M:[1,2,3,4,5]
M[0] = 20
# M:[20,2,3,4,5]
L
# L:[1,2,3,4,5]
numpy使用切片形成的子矩阵
修改子矩阵会改变原来的数据值
如果想不影响,使用copy函数
L=np.array([1,2,3,4,5])
M = L[:]
# M:array([1,2,3,4,5])
M[0] = 20
# M:array([20,2,3,4,5])
L
# L:[20 2 3 4 5]