numpy基本操作(三)--array数组操作
array相关的基本操作
import numpy as np
x = np.arange(10)
x
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
X = np.arange(15).reshape(3,5)
X
array([[ 0, 1, 2, 3, 4],
[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14]])
#ndim--查看数组维度
x.ndim
1
X.ndim
2
#shape--维度的具体数量
x.shape
(10,)
X.shape
(3, 5)
#size--元素的个数
x.size
10
X.size
15
数据访问
x
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
x[0]
0
#访问多维数组
X
array([[ 0, 1, 2, 3, 4],
[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14]])
#指定维度访问(与列表切片类似)
X[0:]
array([[ 0, 1, 2, 3, 4],
[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14]])
X[1:2]
array([[5, 6, 7, 8, 9]])
#访问前两行的前3列
X[:2,:3]
array([[0, 1, 2],
[5, 6, 7]])
#通过步长方式进行访问
X[::2,::2]
array([[ 0, 2, 4],
[10, 12, 14]])
X[::-1,::-1]
array([[14, 13, 12, 11, 10],
[ 9, 8, 7, 6, 5],
[ 4, 3, 2, 1, 0]])
#numpy中存在子矩阵概念,如果子矩阵发生变化,那么父矩阵同样也会发生幻化
sbuX = X[:2,:3]
sbuX
array([[0, 1, 2],
[5, 6, 7]])
#将sbuX中的第一个元素进行赋值后分别查看父矩阵与子矩阵变化
sbuX[0,0]=100
sbuX
array([[100, 1, 2],
[ 5, 6, 7]])
X
array([[100, 1, 2, 3, 4],
[ 5, 6, 7, 8, 9],
[ 10, 11, 12, 13, 14]])
#这里会发现通过变量赋值后父矩阵也发生了变化,如果需要创建一个全新的矩阵需要用到copy方法
sbuX = X[:2,:3].copy()
sbuX
array([[100, 1, 2],
[ 5, 6, 7]])
#这时将100改为10,分别查看父矩阵与子矩阵的变化
sbuX[0,0]=10
sbuX
array([[10, 1, 2],
[ 5, 6, 7]])
X
array([[100, 1, 2, 3, 4],
[ 5, 6, 7, 8, 9],
[ 10, 11, 12, 13, 14]])
reshape--数组维度改变
#改变原数组的维度,这里将一维的x数组变成2维的数组
x.shape
(10,)
x.ndim
1
x.reshape(2,5)
array([[0, 1, 2, 3, 4],
[5, 6, 7, 8, 9]])
x
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
#如果传入-1这里reshape将会自动计算维度(这里将会按照数组中的数量来自动切分数组)
#比如数组中有10个元素,传入5,-1,说明我只需要5行,具体能分成多少列这个函数就会计算出来
x.reshape(5,-1)
array([[0, 1],
[2, 3],
[4, 5],
[6, 7],
[8, 9]])

浙公网安备 33010602011771号