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]])


posted @ 2019-12-10 23:11  Missv4you  阅读(153)  评论(0)    收藏  举报