numpy数组切片和索引:
def testArray():
print("数组取值:")
a = np.array([1, 2, 3, 4, 5])
print(a[:])
print(a[2])
print("\n数组切片取值:")
c = np.arange(10)
print(c[2:7:2])
print("\n数组...取值:")
a = np.array([[1, 2, 3], [3, 4, 5], [4, 5, 6]])
print(a)
print(a[..., 1])
print(a[1, ...])
print(a[..., 1:])
print("\n向量取值:")
a = np.array([1, 2, 3, 4, 5])
b = a.reshape(1, 5)
print(b[:, 2])
print(b[:, : 2])
运行结果:
数组取值:
[1 2 3 4 5]
3
数组切片取值:
[2 4 6]
数组...取值:
[[1 2 3]
[3 4 5]
[4 5 6]]
[2 4 5]
[3 4 5]
[[2 3]
[4 5]
[5 6]]
向量取值:
[3]
[[1 2]]
numpy多维数组切片和索引:
def testVector():
print("\n多维数组取值示例1:")
x = np.array([[1, 2], [3, 4], [5, 6]])
print(x)
y = x[[0, 1, 2], [0, 1, 0]]
print(y)
print("\n多维数组取值示例2:")
x = np.array([[0, 1, 2], [3, 4, 5], [6, 7, 8], [9, 10, 11]])
print(x)
rows = np.array([[0, 0], [3, 3]])
cols = np.array([[0, 2], [0, 2]])
y = x[rows, cols]
print('这个数组的四个角元素是:')
print(y)
print("\n多维数组取值示例3:")
a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
b = a[1:3, 1:3]
c = a[1:3, [1, 2]]
d = a[..., 1:]
print(a)
print(b)
print(c)
print(d)
运行结果:
多维数组取值示例1:
[[1 2]
[3 4]
[5 6]]
[1 4 5]
多维数组取值示例2:
[[ 0 1 2]
[ 3 4 5]
[ 6 7 8]
[ 9 10 11]]
这个数组的四个角元素是:
[[ 0 2]
[ 9 11]]
多维数组取值示例3:
[[1 2 3]
[4 5 6]
[7 8 9]]
[[5 6]
[8 9]]
[[5 6]
[8 9]]
[[2 3]
[5 6]
[8 9]]
注:前面的 :2 切的是行,表示从0到2行(不包括2); 1: 切的是列,表示从1到所有列(包括1)。行是从上到下,列是从左到右.。
结论:Arr[1:2],Arr[:, 1:2]等方式切片能够保持矩阵维度在2维(取决Arr本身的维度),而用Arr[1], Arr[:, 1]方式切片不能够维持原本的矩阵维度,变成了一维
|