python numpy中以数组和矩阵作为数组和矩阵的索引

目录

    • 数组作为数组的索引
    • 数组作为矩阵的索引
    • 矩阵作为矩阵的索引
    • 花式索引

数组作为数组的索引

a=np.array([1,2,3])
b=np.array([1,1,0])
a[b]

结果为

array([2, 2, 1])

这里b可以换成列表或元组,a不能换。

数组作为矩阵的索引

这里只谈论二维矩阵

a=np.array([[1,2,3],
			[4,5,6]])
b=np.array([1,1,0])
a[b]

结果为

array([[4, 5, 6],
       [4, 5, 6],
       [1, 2, 3]])

b中每个元素对应a中一行,如果需要对应a单个元素,需要b的元素本身二维列表、数组或者元组。

矩阵作为矩阵的索引

这里只谈论二维矩阵

a=np.array([[1,2,3],
			[4,5,6]])
b=np.array([[1,1,0],
			[0,0,0],
			[0,0,1]])
a[b]

结果为

array([[[4, 5, 6],
        [4, 5, 6],
        [1, 2, 3]],
       [[1, 2, 3],
        [1, 2, 3],
        [1, 2, 3]],
       [[1, 2, 3],
        [1, 2, 3],
        [4, 5, 6]]])

相当于在上一种情况中把b变成了三个数组,所以一共得到了三个矩阵。

花式索引

b=([1,1,0], [0,0,0]),情况如何?

import numpy as np
a=np.array([[1,2,3],
			[4,5,6]])
b=([1,1,0],[0,0,0])
print(a[b])

结果为

array([4,4,1])

相当于

a([1,1,0],[0,0,0])

等同于使用两个数组(不是一个矩阵),相当于

array([a[1,0],a[1,0],a[1,0]])

从第一个数组和第二个数组分别取出对应的数作为索引的第一维和第二维,这个有点复杂,但很有用,特别是在深度学习中。

你可能感兴趣的:(python,numpy,矩阵,numpy,python,矩阵,花式索引)