如果对象是二维数组,则切片必须为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