【发布时间】:2014-11-04 16:34:52
【问题描述】:
我有一个 numpy 数组 A,其中 n 行大小为 3。每行由三个整数组成,每个整数都是一个整数,它指的是 numpy 数组中的另一个位置。例如,如果我想要N[4] 引用的行,我使用N[N[4]]。视觉上:
N = np.array([[2, 3, 6], [12, 6, 9], [3, 10, 7], [8, 5, 6], [3, 1, 0] ... ])
N[4] = [3, 1 ,0]
N[N[4]] = [[8, 5, 6]
[12, 6, 9]
[2, 3, 6]]
我正在构建一个修改 N 的函数,并且我需要为某些指定的 x 修改 N[N[x]],这也是一个参数(示例中为 4)。我想将子数组中的所有 6 更改为另一个数字(比如说 0),所以我使用 numpy.where 来查找索引,它们是
where_is_6 = np.where(N[N[4]] == 6)
现在,如果我像N[N[4]][where_is_6] = 0 一样直接替换,则没有任何变化。如果我之前引用了var = N[N[4]],然后var[where_is_6],则更改已完成,但在函数本地进行,并且 N 不会全局更改。在这种情况下我能做什么?还是我做错了什么?
【问题讨论】:
-
使用另一个索引的索引不适用于您定义列表
N的方式。您需要先将 N 转换为numpy.array()。 -
我说它是一个numpy数组,代码虽然没有反映,现在编辑...
标签: python arrays numpy indexing