【发布时间】:2020-11-07 19:39:17
【问题描述】:
我看到了一个 Python 代码,其中可以使用“索引”以及 Python 运算符“地板除法”和“模数”来获取矩阵中的值。
给定下面的 (3,3) 矩阵。
>>> m = np.array([['0>','1>','2>'],['3>','4>','5>'],['6>','7>','8>']])
>>> m
array([['0>', '1>', '2>'],
['3>', '4>', '5>'],
['6>', '7>', '8>']], dtype='<U2')
如果我们“扁平化”给定的矩阵,我们将拥有:
>>> m.reshape(-1)
array(['0>', '1>', '2>', '3>', '4>', '5>', '6>', '7>', '8>'], dtype='<U2')
假设我要读取值 '3>',它是数组中第 4 位的值。
如果我使用索引3,我可以从矩阵中获取相应的值,使用:
>>> idx = int(np.where(m.reshape(-1) == '3>')[0])
>>> idx
3
>>> x = idx // m.shape[0]
>>> y = idx % m.shape[0]
>>>
>>> m[x][y]
'3>'
>>>
我看不出这是如何工作的。
对此有何解释?
【问题讨论】:
-
不清楚您对代码的哪些部分感到困惑。您了解用于获取
x和y的表达式吗?你打印出这些值了吗?您是否尝试过一次做一级索引(例如row = m[x])? -
@Blckknght 我写了代码。我不明白这些操作如何正确索引矩阵。
标签: python numpy deep-learning linear-algebra reinforcement-learning