首页 > 编程知识 正文

numpy二维数组切片,python索引二维数组

时间:2023-05-03 22:54:12 阅读:135254 作者:4312

如果对象是二维数组,则切片必须为x[:]形式,并有冒号。 冒号前后分别表示对象的第0个和第1个维。

如果对象是三维阵列,则切片必须为x[:]。 那里有两个冒号,分隔了三个间隔。 三个间隔之前、之中和之后分别表示对象的第0、1和第二个维。

x[n,]、x[:n]、x[m:n,]、x[:m:n]

上面的大括号(m:n )应被视为整体,(除了m:n )之外的冒号用于指示在哪个维度上操作。

在二维阵列的情况下,冒号之前的[n,]意味着对二维阵列中第0维第n个元素的操作,冒号之后的[,n]意味着对二维阵列中第1维第n个元素的操作。 将n置换为(m:n )时,意味着对第m个至第n-1个元素的操作。

示例:

导入编号为NP

a=NP.array ([ 1,2,3,4 ]、[ 5,6,7,8 ]、[ 9,10,11,12 ]、[ 13,14,15,16 ]、[ 17,18,19,20 ]

打印(a.shape ) )。

打印(a [ 0, ],a [ 0, ].shape ) )。

打印(a [ 1, ],a [ 1, ].shape ) )。

打印(a (-1, ),a (-1, ).shape ) )。

打印(a [ 0:2, ],a [ 0:2, ].shape ) ) ) ) )。

打印(a [ :0 ],a [ :0 ].shape ) ) )。

打印(a [ :1 ],a [ :1 ].shape ) )。

print(a[:-1],a[:-1].shape )。

打印(a [ :0:2 ],a [ :0:2 ].shape ) )

执行结果如下。

(5,4 ) )。

[1234](4,

[5678](4,

[17181920](4,

[[1 2 3 4]

[56(7)8] ) 2,4 ) )。

[1591317](5,

[26101418](5,

[48121620](5,

[1(2]) ]

[5(6]) ]

[ 9 10]

[13 14]

([ 1718 ] (5,2 ) )。

Process finished with exit code 0

在上面的示例中,a是shape=(5,4 )的数组。 第0个维有5个元素,第1个维有4个元素(元素不一定是单个值,也可以是数组)。 这里对元素的称呼是相对于某个维度的)。

a [ 0, ]、a [ 1, ]、a [-1, ]分别提取a的第0个维度中的第0个、第1个、第-1个要素,各要素为含有4个要素的阵列。

a [ 0:2, ]提取a的第0维的第0和第1两个元素。 2个要素都是包含4个要素的排列,一起构成二维排列。

a[:0 ]、a [ :1 ]、a [ :-1]分别提取出a的第一维的0、1、-1个元素,每一个元素都是单一的元素值。

a [ :033602 ]提取了a的第一维的第0和第1两个元素。 两个要素都是单一的要素值,构成了二维数组。

x[n,3360]、x[:n:]、x [ :n]、x[m:n,33603360]、x[m:n

上面的大括号(m:n )应视为一个整体,)除m:n )之外的两个冒号用于指示在哪个维上操作。

在三维数组的情况下,2冒号开头的(n ) )意味着对三维数组第0维第n个元素的操作,2冒号中间的),n )意味着对三维数组第1维第n个元素的操作,2冒号后面的),n )意味着三维数组第2个元素的操作将n置换为(m:n )时,意味着对第m个至第n-1个元素的操作。

示例:

导入编号为NP

b=NP.array ([ 1,2,3,4 ]、[ 5,6,7,8 ]、[ 9,10,11,12 ],

[ 13,14,15,16 ]、[ 17,18,19,20 ]、[ 21,22,23,24 ],

[ 25,26,27,28 ]、[ 29,30,31,32 ]、[ 33,34,35,36 ],

] )

打印(b.shape ) )。

print (b [ 0,3360 ]、b [ 1, ]、b [-1,3360 ]、b [ 033602, ] ) )

打印(b [ 0,3360 ],b [ 0,3360 ].shape ) () ) ) ) ) ) ) ) )。

打印(b [ 1,3360 ],b [ 1,3360 ].shape ) )。

打印(b (-1,3360 ),b (-1, ).shape ) ) ) )。

print (b [ 0:2, ]、b [ 0:2,3360 ].shap

e)

print("b[:, 0:],b[:, 1:],b[:, -1:],b[:, 0:2:]")

print(b[:, 0:], b[:, 0:].shape)

print(b[:, 1:], b[:, 1:].shape)

print(b[:, -1:], b[:, -1:].shape)

print(b[:, 0:2:], b[:, 0:2:].shape)

print("b[::, 0],b[::, 1],b[::, -1],b[::, 0:2:]")

print(b[::, 0], b[::, 0].shape)

print(b[::, 1], b[::, 1].shape)

print(b[::, -1], b[::, -1].shape)

print(b[::, 0:2:], b[::, 0:2].shape)

print("b[:,:, 0],b[:,:, 1],b[:,:, -1],b[:,:, 0:2:]")

print(b[:, :, 0], b[:, :, 0].shape)

print(b[:, :, 1], b[:, :, 1].shape)

print(b[:, :, -1], b[:, :, -1].shape)

print(b[:, :, 0:2:], b[:, :, 0:2].shape)

运行结果如下:

(3, 3, 4)

b[0, ::],b[1, ::],b[-1, ::],b[0:2, ::]

[[ 1 2 3 4]

[ 5 6 7 8]

[ 9 10 11 12]] (3, 4)

[[13 14 15 16]

[17 18 19 20]

[21 22 23 24]] (3, 4)

[[25 26 27 28]

[29 30 31 32]

[33 34 35 36]] (3, 4)

[[[ 1 2 3 4]

[ 5 6 7 8]

[ 9 10 11 12]]

[[13 14 15 16]

[17 18 19 20]

[21 22 23 24]]] (2, 3, 4)

b[:, 0:],b[:, 1:],b[:, -1:],b[:, 0:2:]

[[[ 1 2 3 4]

[ 5 6 7 8]

[ 9 10 11 12]]

[[13 14 15 16]

[17 18 19 20]

[21 22 23 24]]

[[25 26 27 28]

[29 30 31 32]

[33 34 35 36]]] (3, 3, 4)

[[[ 5 6 7 8]

[ 9 10 11 12]]

[[17 18 19 20]

[21 22 23 24]]

[[29 30 31 32]

[33 34 35 36]]] (3, 2, 4)

[[[ 9 10 11 12]]

[[21 22 23 24]]

[[33 34 35 36]]] (3, 1, 4)

[[[ 1 2 3 4]

[ 5 6 7 8]]

[[13 14 15 16]

[17 18 19 20]]

[[25 26 27 28]

[29 30 31 32]]] (3, 2, 4)

b[::, 0],b[::, 1],b[::, -1],b[::, 0:2:]

[[ 1 2 3 4]

[13 14 15 16]

[25 26 27 28]] (3, 4)

[[ 5 6 7 8]

[17 18 19 20]

[29 30 31 32]] (3, 4)

[[ 9 10 11 12]

[21 22 23 24]

[33 34 35 36]] (3, 4)

[[[ 1 2 3 4]

[ 5 6 7 8]]

[[13 14 15 16]

[17 18 19 20]]

[[25 26 27 28]

[29 30 31 32]]] (3, 2, 4)

b[:,:, 0],b[:,:, 1],b[:,:, -1],b[:,:, 0:2:]

[[ 1 5 9]

[13 17 21]

[25 29 33]] (3, 3)

[[ 2 6 10]

[14 18 22]

[26 30 34]] (3, 3)

[[ 4 8 12]

[16 20 24]

[28 32 36]] (3, 3)

[[[ 1 2]

[ 5 6]

[ 9 10]]

[[13 14]

[17 18]

[21 22]]

[[25 26]

[29 30]

[33 34]]] (3, 3, 2)

Process finished with exit code 0

上例中,b是shape=(3,3,4)的数组。第0个维度上有3个元素,第1个维度上有3个元素,第2个维度上有4个元素(元素不一定是单个值, 也可能是数组,这里的元素的叫法是相对于某个维度而言的)。

b[0, ::]、b[1, ::]、b[-1, ::]分别提取了b的第0个维度上的第0、1和-1个元素,每个元素都是一个二维数组。

b[0:2, ::]提取了b的第0个维度上的第0和1两个元素,两个元素都是一个二维数组,共同组成一个三维数组。

b[:, 0:]、b[:, 1:]、b[:, -1:]分别提取了b的全部元素(都是由4个元素的单个数组)、b的第1个维度上除第0号外的所有元素(都是由4个元素的单个数组)、b的第1个维度上的所有最后一个位置上的元素(都是由4个元素的单个数组)。

b[:, 0:2:]提取了b的第1个维度上的第0和1两个元素,两个元素都是一个有4个元素的数组,共同组成一个三维数组。

b[::, 0]、b[::, 1]、b[::, -1]分别提取了b的第2个维度上的0、1和-1个元素(这里的元素就是单个有4个元素的数组),每个元素都是有4个元素的数组。

b[::, 0:2]提取了b的第2个维度上的第0和1两个元素(这里的元素就是单个有4个元素的数组),两个元素都是有4个元素的数组。

b[:,:, 0]、b[:,:, 1]、b[:,:, -1]分别提取了b的第2个维度的所有元素(即有4个元素的数组)中的第0、1和-1个元素值,每个元素都是单个元素值。

b[:,:, 0:2]提取了b的第2个维度的所有元素(即有4个元素的数组)中的第0和1两个元素值,两个元素都是单个元素值。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

本文标题: 详解Python二维数组与三维数组切片的方法

本文地址: http://www.cppcns.com/jiaoben/python/265860.html

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。