有人能给我解释一下numpy.indexs()吗?

kwvwclae  于 2023-01-02  发布在  其他
关注(0)|答案(3)|浏览(169)

我读过几次关于np.indexs的文档()但我好像抓不住它是什么,我在东西上用过无数次,看它有什么作用,但我还是不太懂。也许是因为我是个编程新手,所以我不明白那些描述它的词语背后的意思。另外,我不是以英语为母语的人(虽然我对此没有意见)。我将非常感谢你的简单解释,可能是一些例子。谢谢。

6gpjuf90

6gpjuf901#

假设矩阵M的第(i,j)个元素等于

M_ij = 2*i + 3*j

定义此矩阵的一种方法是

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

其产生

array([[0, 3, 6],
       [2, 5, 8]])

换句话说,*np.indices返回可用作索引的数组 *。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]])
wh6knrhe

wh6knrhe2#

已经发布的答案仍然很复杂,下面是理解它的最简单方法。

步骤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网格的索引:

monwx1rj

monwx1rj3#

我已经理解了这个代码。
下面的函数与np. indices()具有相同的行为。

# fixed dimensions=(2,3,4)
def my_indices():
    dimensions = (2,3,4)
    A = np.empty(dimensions)
    # dimensions[0] = 2
    A[0, :, :] = 0
    A[1, :, :] = 1

    B = np.empty(dimensions)
    # dimensions[1] = 3
    B[:, 0, :] = 0
    B[:, 1, :] = 1
    B[:, 2, :] = 2

    C = np.empty(dimensions)
    # dimensions[2] = 4
    C[:, :, 0] = 0
    C[:, :, 1] = 1
    C[:, :, 2] = 2
    C[:, :, 3] = 3

    return [A, B, C]
    • 打电话**
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. indexs()用例**
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.indices()的示例

def create_hsv_map2():
    img_hsv = np.empty((180, 256, 3), np.uint8)
    hue = np.repeat(np.arange(180).reshape(180, 1), repeats=256, axis=1)
    saturation = np.repeat(np.arange(256).reshape(1, 256), repeats=180, axis=0)
    img_hsv[:, :, 0] = hue
    img_hsv[:, :, 1] = saturation
    img_hsv[:, :, 2] = 255
    # ...

相关问题