理解numpy ndarry中的axis
理解shape()中对应的axis
arr = np.arange(0,24).reshape(2,3,4)
arr
打印:
array([[[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]],
[[12, 13, 14, 15],
[16, 17, 18, 19],
[20, 21, 22, 23]]])
各个axis上的元素是什么
- shape中的2,3,4分别对应axis中的0,1,2
- axis0有2个元素,分别是
arr[0,:]
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
arr[1,:]
array([[12, 13, 14, 15],
[16, 17, 18, 19],
[20, 21, 22, 23]])
- axis1中有3个元素
arr[:,0]
array([[ 0, 1, 2, 3],
[12, 13, 14, 15]])
arr[:,1]
array([[ 4, 5, 6, 7],
[16, 17, 18, 19]])
arr[:,2]
array([[ 8, 9, 10, 11],
[20, 21, 22, 23]])
- axis2中有4个元素
arr[:,:,0]
array([[ 0, 4, 8],
[12, 16, 20]])
arr[:,:,1]
array([[ 1, 5, 9],
[13, 17, 21]])
arr[:,:,2]
array([[ 2, 6, 10],
[14, 18, 22]])
arr[:,:,3]
array([[ 3, 7, 11],
[15, 19, 23]])
对axis的操作,np.delete(ndarray, index, axis)
arr0 = np.delete(arr, 0, axis=0)
arr0
array([[[12, 13, 14, 15],
[16, 17, 18, 19],
[20, 21, 22, 23]]])
arr1 = np.delete(arr, 0, axis=1)
arr1
array([[[ 4, 5, 6, 7],
[ 8, 9, 10, 11]],
[[16, 17, 18, 19],
[20, 21, 22, 23]]])
arr2 = np.delete(arr, 0, axis=2)
arr2
array([[[ 1, 2, 3],
[ 5, 6, 7],
[ 9, 10, 11]],
[[13, 14, 15],
[17, 18, 19],
[21, 22, 23]]])
一个方便记忆axis的方法,shape(2,3,4)中的各个数字对应数组从外到里面的方括号数。看例子:
arr
array([[[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]],
[[12, 13, 14, 15],
[16, 17, 18, 19],
[20, 21, 22, 23]]])
- axis=0,从最外层进入一个方括号,就有两对[[ … ]]
- axis=1,从外层进入进两个方括号,有三对[…]
- axis=2,就是数字,有四个
- 所以两,三,四对应shape(2,3,4)