Python 谁能给我解释一下numpy.index()吗?

Python 谁能给我解释一下numpy.index()吗?,python,numpy,indices,Python,Numpy,Indices,关于np.index()的文档我已经读了好几遍了,但我似乎无法理解它是关于什么的。 我已经在很多事情上使用过它,看看它能做什么,但我仍然不能真正理解它。也许问题是我是一个编程新手,所以我无法理解描述它的文字背后的意思。此外,我不是以英语为母语的人(尽管我在这方面没有问题)。 如果能给我一个更简单的解释,我将不胜感激,也许可以举个例子。谢谢 假设有一个矩阵M,其(i,j)-th元素等于 M_ij = 2*i + 3*j 定义该矩阵的一种方法是 i, j = np.indices((2,3)) M

关于np.index()的文档我已经读了好几遍了,但我似乎无法理解它是关于什么的。 我已经在很多事情上使用过它,看看它能做什么,但我仍然不能真正理解它。也许问题是我是一个编程新手,所以我无法理解描述它的文字背后的意思。此外,我不是以英语为母语的人(尽管我在这方面没有问题)。
如果能给我一个更简单的解释,我将不胜感激,也许可以举个例子。谢谢

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

M_ij = 2*i + 3*j
定义该矩阵的一种方法是

i, j = np.indices((2,3))
M = 2*i + 3*j
产生

array([[0, 3, 6],
       [2, 5, 8]])
换句话说,返回可以用作索引的数组。
i
中的元素表示行索引:

In [12]: i
Out[12]: 
array([[0, 0, 0],
       [1, 1, 1]])
j
中的元素表示列索引:

In [13]: j
Out[13]: 
array([[0, 1, 2],
       [0, 1, 2]])

我理解这个代码

以下函数的行为与np.index()相同

呼叫

A, B, C = my_indices()
print(A.shape)
print(B.shape)
print(C.shape)
print('A\n', A)
print('B\n', B)
print('C\n', C)
结果

(2, 3, 4)
(2, 3, 4)
(2, 3, 4)
A
 [[[0. 0. 0. 0.]
  [0. 0. 0. 0.]
  [0. 0. 0. 0.]]

 [[1. 1. 1. 1.]
  [1. 1. 1. 1.]
  [1. 1. 1. 1.]]]

B
 [[[0. 0. 0. 0.]
  [1. 1. 1. 1.]
  [2. 2. 2. 2.]]

 [[0. 0. 0. 0.]
  [1. 1. 1. 1.]
  [2. 2. 2. 2.]]]

C
 [[[0. 1. 2. 3.]
  [0. 1. 2. 3.]
  [0. 1. 2. 3.]]

 [[0. 1. 2. 3.]
  [0. 1. 2. 3.]
  [0. 1. 2. 3.]]]
np.index()用例

def create_hsv_map():
    img_hsv = np.empty((180, 256, 3), np.uint8)
    hue, saturation = np.indices((180,256))
    img_hsv[:, :, 0] = hue
    img_hsv[:, :, 1] = saturation
    img_hsv[:, :, 2] = 255
    # ...
使用np.repeat()代替np.index()的示例

已经发布的答案仍然很复杂,因此这里有一个最简单的理解方法。
步骤1:让我们创建一个2x2网格

ids = np.indices((2,2))
第2步:现在让我们打开
i,j
索引

i, j = ids 
这些是索引
i,j

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

print(j)
[[0 1]
 [0 1]]
第3步:了解
i,j
代表什么

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

我们得到:
(0,0)、(0,1)、(1,0)、(1,1)

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


不要说你是个新手,我学了numpy很多年了,对这个index()函数也很困惑。感谢您提出这个问题。文档已经仔细编写,以便有效掩盖这一事实。
i, j = ids 
print(i)
[[0 0]
 [1 1]]

print(j)
[[0 1]
 [0 1]]