我读过几次关于np.indexs的文档()但我好像抓不住它是什么,我在东西上用过无数次,看它有什么作用,但我还是不太懂。也许是因为我是个编程新手,所以我不明白那些描述它的词语背后的意思。另外,我不是以英语为母语的人(虽然我对此没有意见)。我将非常感谢你的简单解释,可能是一些例子。谢谢。
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中的元素表示行索引:
np.indices
i
In [12]: i Out[12]: array([[0, 0, 0], [1, 1, 1]])
j中的元素表示列索引:
j
In [13]: j Out[13]: array([[0, 1, 2], [0, 1, 2]])
wh6knrhe2#
步骤1:让我们创建一个2x2网格
ids = np.indices((2,2))
**第2步:**现在,我们解包i,j索引
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网格的索引:
(i0,j0), (i1,j1), (i2,j2), (i3,j3)
(0,0), (0,1), (1,0), (1,1)
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.]]]
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 # ...
3条答案
按热度按时间6gpjuf901#
假设矩阵M的第(i,j)个元素等于
定义此矩阵的一种方法是
其产生
换句话说,*
np.indices
返回可用作索引的数组 *。i
中的元素表示行索引:j
中的元素表示列索引:wh6knrhe2#
已经发布的答案仍然很复杂,下面是理解它的最简单方法。
步骤1:让我们创建一个2x2网格
**第2步:**现在,我们解包
i,j
索引这些是索引
i,j
:**步骤3:**了解
i,j
代表什么最简单的方法是将
(i0,j0), (i1,j1), (i2,j2), (i3,j3)
配对,即将i
的每个元素与j
的对应元素进行匹配。所以我们得到:
(0,0), (0,1), (1,0), (1,1)
。这些正是2x2网格的索引:
monwx1rj3#
我已经理解了这个代码。
下面的函数与np. indices()具有相同的行为。
使用np.repeat()代替np.indices()的示例