实例:每个子数列包含一个子数列的数组切片
import numpy as np
a= np. array( [ [ 1 , 2 , 3 , 4 , 5 , 6 ] , [ 1 , 2 , 3 , 4 , 5 ] ] )
b= a[ 1 : 4 ] . copy( )
print ( '数组a的第1-3个元素:\n' , a[ 0 : 3 ] )
print ( '数组a的2-4个元素组成的新数组:\n' , b)
a[ 1 : 3 ] = 8
print ( '将数组a的第2-3个元素替换成8:\n' , a)
runfile( 'C:/Users/xyy/.spyder-py3/temp.py' , wdir= 'C:/Users/xyy/.spyder-py3' )
数组a的第1 - 3 个元素:
[ list ( [ 1 , 2 , 3 , 4 , 5 , 6 ] ) list ( [ 1 , 2 , 3 , 4 , 5 ] ) ]
数组a的2 - 4 个元素组成的新数组:
[ list ( [ 1 , 2 , 3 , 4 , 5 ] ) ]
将数组a的第2 - 3 个元素替换成8 :
[ list ( [ 1 , 2 , 3 , 4 , 5 , 6 ] ) 8 ]
实例:每个子数列包含多个子数列的数组切片
import numpy as np
a= np. random. randn( 3 , 3 , 3 )
b= a[ 0 : 2 , 1 : 3 ]
print ( '数组a:\n' , a)
print ( '数组a的第1个子数列的2-3个子数列的第2个元素组成的数组:\n' , a[ 0 , 1 : 3 , 1 ] )
print ( '数组a的1-2个子数列的2-3个子数列组成的新数组:\n' , b)
a[ 1 : 3 ] = 8
print ( '将数组a的2-3个子数列的元素替换成8:\n' , a)
runfile( 'C:/Users/xyy/.spyder-py3/temp.py' , wdir= 'C:/Users/xyy/.spyder-py3' )
数组a:
[ [ [ - 0.90269342 - 0.43265603 - 0.92860432 ]
[ 0.25558925 - 0.07598635 0.69222605 ]
[ 0.8788172 - 1.50049757 - 1.38031517 ] ]
[ [ - 0.57645489 0.36090687 2.51159765 ]
[ 0.15829945 - 0.66611814 - 0.16076225 ]
[ 0.18714922 - 0.64855779 - 1.63836724 ] ]
[ [ 0.35579657 1.35175548 0.29208086 ]
[ 0.65288393 1.53682559 0.29201621 ]
[ 0.83269586 - 2.55751786 0.82586841 ] ] ]
数组a的第1 个子数列的2 - 3 个子数列的第2 个元素:
[ - 0.07598635 - 1.50049757 ]
数组a的1 - 2 个子数列的2 - 3 个子数列组成的新数组:
[ [ [ 0.25558925 - 0.07598635 0.69222605 ]
[ 0.8788172 - 1.50049757 - 1.38031517 ] ]
[ [ 0.15829945 - 0.66611814 - 0.16076225 ]
[ 0.18714922 - 0.64855779 - 1.63836724 ] ] ]
将数组a的2 - 3 个子数列的元素替换成8 :
[ [ [ - 0.90269342 - 0.43265603 - 0.92860432 ]
[ 0.25558925 - 0.07598635 0.69222605 ]
[ 0.8788172 - 1.50049757 - 1.38031517 ] ]
[ [ 8 . 8 . 8 . ]
[ 8 . 8 . 8 . ]
[ 8 . 8 . 8 . ] ]
[ [ 8 . 8 . 8 . ]
[ 8 . 8 . 8 . ]
[ 8 . 8 . 8 . ] ] ]
实例:布尔型索引切片
import numpy as np
a= np. random. randn( 3 , 3 , 3 )
b= np. array( [ 'a' , 'b' , 'c' ] )
print ( '数组a:\n' , a)
print ( '数组a中与数组b中元素a或c所在位置的一致的值:\n' , a[ ( b== 'a' ) | ( b== 'c' ) ] )
print ( '数组a中与数组b中元素a所在位置的不一致的值:\n' , a[ b!= 'a' ] )
print ( '数组a中小于0.8且大于0.4的值:\n' , a[ ( a> 0.4 ) & ( a< 0.8 ) ] )
print ( '数组a中与数组b中元素a所在位置的一致的子数列中的第一个值:\n' , a[ b== 'a' , 0 : 1 ] )
b[ b!= 'c' ] = 'd'
print ( '将数组b中不等于c的值赋为d:\n' , b)
runfile( 'C:/Users/xyy/.spyder-py3/temp.py' , wdir= 'C:/Users/xyy/.spyder-py3' )
数组a:
[ [ [ 0.9737554 - 1.57542548 0.5388869 ]
[ 0.82043092 - 0.55592176 - 0.75482538 ]
[ 0.04980767 1.46983313 1.04191912 ] ]
[ [ - 0.11622319 - 1.52660474 - 0.27612857 ]
[ - 0.85539785 - 0.12387973 1.81190146 ]
[ 0.09030056 - 0.20628459 0.18466906 ] ]
[ [ - 0.32157311 0.38588188 - 0.37953662 ]
[ 0.69474672 - 0.090586 0.66955368 ]
[ 1.00127603 - 0.76034316 0.02837398 ] ] ]
数组a中与数组b中元素a或c所在位置的一致的值:
[ [ [ 0.9737554 - 1.57542548 0.5388869 ]
[ 0.82043092 - 0.55592176 - 0.75482538 ]
[ 0.04980767 1.46983313 1.04191912 ] ]
[ [ - 0.32157311 0.38588188 - 0.37953662 ]
[ 0.69474672 - 0.090586 0.66955368 ]
[ 1.00127603 - 0.76034316 0.02837398 ] ] ]
数组a中与数组b中元素a所在位置的不一致的值:
[ [ [ - 0.11622319 - 1.52660474 - 0.27612857 ]
[ - 0.85539785 - 0.12387973 1.81190146 ]
[ 0.09030056 - 0.20628459 0.18466906 ] ]
[ [ - 0.32157311 0.38588188 - 0.37953662 ]
[ 0.69474672 - 0.090586 0.66955368 ]
[ 1.00127603 - 0.76034316 0.02837398 ] ] ]
数组a中小于0.8 且大于0.4 的值:
[ 0.5388869 0.69474672 0.66955368 ]
数组a中与数组b中元素a所在位置的一致的子数列中的第一个值:
[ [ [ 0.9737554 - 1.57542548 0.5388869 ] ] ]
将数组b中不等于c的值赋为d:
[ 'd' 'd' 'c' ]
实例:花式索引切片
import numpy as np
a= np. arange( 32 ) . reshape( ( 8 , 4 ) )
print ( '数组a:\n' , a)
print ( '数组a中第2个子数列的第3个值、第4个子数列中第4个值:\n' , a[ [ 1 , 3 ] , [ 2 , 3 ] ] )
print ( '数组a中第2、3个子数列的第2-4个值:\n' , a[ [ 1 , 2 ] , 1 : 5 ] )
print ( '数组a中第2个子数列的第2个值与第3个子数列的第3个值、第4个子数列的第2个值与第7个子数列的第3个值:\n' , a[ [ [ 1 , 2 ] , [ 3 , 6 ] ] , [ [ 1 , 2 ] ] ] )
print ( '数组a中第2个子数列的第1个值与第3个子数列的第3个值、第4个子数列的第2个值与第7个子数列的第3个值:\n' , a[ [ [ 1 , 2 ] , [ 3 , 6 ] ] , [ [ 0 , 2 ] , [ 1 , 2 ] ] ] )
print ( '数组a中第2、3个子数列中所有数列的第2个值与第3个值:\n' , a[ [ 1 , 2 ] ] [ : , [ 1 , 2 ] ] )
print ( '数组a中第2、3个子数列和4、6个子数列中所有子数列的第2-3个值:\n' , a[ [ [ [ 1 , 2 ] , [ 3 , 5 ] ] ] ] [ : , : , 1 : 3 ] )
for i in range ( 8 ) :
a[ i] = i
print ( '赋值后的数组a:\n' , a)
runfile( 'C:/Users/xyy/.spyder-py3/temp.py' , wdir= 'C:/Users/xyy/.spyder-py3' )
数组a:
[ [ 0 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 ] ]
数组a中第2 个子数列的第3 个值、第4 个子数列中第4 个值:
[ 6 15 ]
数组a中第2 、3 个子数列的第2 - 4 个值:
[ [ 5 6 7 ]
[ 9 10 11 ] ]
数组a中第2 个子数列的第2 个值与第3 个子数列的第3 个值、第4 个子数列的第2 个值与第7 个子数列的第3 个值:
[ [ 5 10 ]
[ 13 26 ] ]
数组a中第2 个子数列的第1 个值与第3 个子数列的第3 个值、第4 个子数列的第2 个值与第7 个子数列的第3 个值:
[ [ 4 10 ]
[ 13 26 ] ]
数组a中第2 、3 个子数列中所有数列的第2 个值与第3 个值:
[ [ 5 6 ]
[ 9 10 ] ]
数组a中第2 、3 个子数列和4 、6 个子数列中所有子数列的第2 - 3 个值:
[ [ [ 5 6 ]
[ 9 10 ] ]
[ [ 13 14 ]
[ 21 22 ] ] ]
赋值后的数组a:
[ [ 0 0 0 0 ]
[ 1 1 1 1 ]
[ 2 2 2 2 ]
[ 3 3 3 3 ]
[ 4 4 4 4 ]
[ 5 5 5 5 ]
[ 6 6 6 6 ]
[ 7 7 7 7 ] ]