numpy多维数组

时间:2023-03-09 15:01:38
numpy多维数组

1 numpy多维数组的切片用法

c = np.array([[[0,1,2],[4,5,6],[8,7,5],[10,11,12]],[[6,2,3],[9,8,34],[100,101,102],[110,111,112]]])
c
array([[[ 0, 1, 2],
[ 4, 5, 6],
[ 8, 7, 5],
[ 10, 11, 12]],
[[ 6, 2, 3],
[ 9, 8, 34],
[100, 101, 102],
[110, 111, 112]]])
# c的shape是2 4 3 2指的是从最外面的括号向下一级括号看,下一级括号有两个,所以是2,
# 3指的是从最后一级括号向内看,维数为3,所以是3
c.shape
(2, 4, 3)
# 这里的:即把shape[0]和shape[1]都包含了
c[:,1]
array([[ 4, 5, 6],
[ 9, 8, 34]])
c[1,:]
array([[ 6, 2, 3],
[ 9, 8, 34],
[100, 101, 102],
[110, 111, 112]])
c[0:2,1:2,2:3]
array([[[ 6]],
[[34]]])
a[::-1] # 逆序输出

2 list二维数组切片

注意它的用法不够灵活,无法实现直接切片出某一列,要用for循环才能实现

a = [[1,2,3,4], [5,6,7,8], [9,10,11,12]]
print(a[:])
print(a[:][1:3])
# 想要切片某一列,这是错误写法
print(a[0:2][1:2])
# 正确写法
print([a[k][1:2] for k in range(3)])
# [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]
# [[5, 6, 7, 8], [9, 10, 11, 12]]
# [[5, 6, 7, 8]]
# [[2], [6], [10]]

ttt