一 取一个矩阵的子矩阵
import numpy as np
a=np.array([[1,2,3,4],
[5,6,7,8],
[9,10,11,12]])
#-2代表倒数第2行,1:3代表从第1列到第3列,但不包含第3列
a[-2:,1:3]
array([[ 6, 7],
[10, 11]])
#错误写法
a[-2:][1:3]
array([[ 9, 10, 11, 12]])
二 取矩阵中某个元素的值
a[1,-2]
7
三 查看数组和维度
a
array([[ 1, 2, 3, 4],
[ 5, 6, 7, 8],
[ 9, 10, 11, 12]])
a.shape
(3, 4)
b=a[-2:,1:3]
b.shape
(2, 2)
b=a[2,1:3]
b
array([10, 11])
b.shape
(2,)
b=a[1,2]
b
7
b.shape
()
#使用整数索引,维度为减1
b=a[2,1:3]
b
array([10, 11])
b.shape
(2,)
#使用范围索引,维度不会发生变化:
b=a[2:3,1:3]
b
array([[10, 11]])
b.shape
(1, 2)
四 每行第2个元素加10
#第一种写法
a
array([[ 1, 2, 3, 4],
[ 5, 6, 7, 8],
[ 9, 10, 11, 12]])
a[np.arange(3),1]+=10
a
array([[ 1, 12, 3, 4],
[ 5, 16, 7, 8],
[ 9, 20, 11, 12]])
#第二种写法
a[np.arange(3),[1,1,1]]+=10
a
array([[ 1, 22, 3, 4],
[ 5, 26, 7, 8],
[ 9, 30, 11, 12]])
#第三种写法
a[[0,1,2],[1,1,1]]+=10
a
array([[ 1, 32, 3, 4],
[ 5, 36, 7, 8],
[ 9, 40, 11, 12]])
五 产生一个指定范围内数字的数组
np.arange(3)
array([0, 1, 2])
np.arange(3,7)
array([3, 4, 5, 6])
六 数组中元素大于10的元素
a
array([[ 1, 32, 3, 4],
[ 5, 36, 7, 8],
[ 9, 40, 11, 12]])
#第一种写法
result_index=a>10
result_index
array([[False, True, False, False],
[False, True, False, False],
[False, True, True, True]])
a[result_index]
array([32, 36, 40, 11, 12])
#第二种写法
a[a>10]
array([32, 36, 40, 11, 12])