有人能解释一下numpy.indices()吗?

lkk*_*ky7 13 python numpy indices

我已经多次阅读过有关np.indices()的文档,但我似乎无法理解它是什么.我已经多次使用它来看它的作用,但我仍然无法得到它.也许事情是我是编程的初学者所以我无法理解描述它的词语背后的想法.另外我不是母语为英语的人(尽管我没有问题).我会非常感谢一些更简单的解释,可能是一些例子.谢谢.

unu*_*tbu 14

假设你有一个矩阵M,其第(i,j)个元素等于

M_ij = 2*i + 3*j
Run Code Online (Sandbox Code Playgroud)

定义这个矩阵的一种方法是

i, j = np.indices((2,3))
M = 2*i + 3*j
Run Code Online (Sandbox Code Playgroud)

产量

array([[0, 3, 6],
       [2, 5, 8]])
Run Code Online (Sandbox Code Playgroud)

换句话说,np.indices返回可以用作索引的数组.元素in i表示行索引:

In [12]: i
Out[12]: 
array([[0, 0, 0],
       [1, 1, 1]])
Run Code Online (Sandbox Code Playgroud)

元素in j表示列索引:

In [13]: j
Out[13]: 
array([[0, 1, 2],
       [0, 1, 2]])
Run Code Online (Sandbox Code Playgroud)

  • 该文档经过精心编写,以有效掩盖这一事实。 (4认同)

mak*_*kis 5

已经发布的答案仍然很复杂,所以这里是理解这一点的最简单方法。


第 1 步:让我们创建一个2x2 网格

ids = np.indices((2,2))
Run Code Online (Sandbox Code Playgroud)

第 2 步:现在让我们解压i,j索引

i, j = ids 
Run Code Online (Sandbox Code Playgroud)

这些是指数i,j

print(i)
[[0 0]
 [1 1]]

print(j)
[[0 1]
 [0 1]]
Run Code Online (Sandbox Code Playgroud)

第 3 步:了解i,j代表什么

想到它的简单方法是配对,(i0,j0), (i1,j1), (i2,j2), (i3,j3) 即匹配 的每个元素i与 的相应元素j

所以我们得到:(0,0), (0,1), (1,0), (1,1)

这些正是 2x2 网格的索引:

在此处输入图片说明