实例:每个子数列包含一个子数列的数组切片
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]]