我有一个NxM的numpy数组,里面填充了零和一个大小为N的1D numpy数组,其中包含0到M-1之间的随机整数。正如您所看到的,数组的维度与矩阵中的行数匹配。整数数组中的每个元素表示在其对应行中的给定位置必须设置为1。例如:
# The matrix to be modified
a = np.zeros((2,10))
# Indices array of size N
indices = np.array([1,4])
# Indexing, the result must be
a = a[at indices per row]
print a
[[0, 1, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 1, 0, 0, 0, 0, 0]]
我尝试使用索引
a[:,indices]
,但这会为每一行设置相同的索引,最终将所有行都设置为1。我该如何为每一行单独设置给定的索引为1?
a[np.where(indices)+(indices,)] = 1
也将达到同样的效果。 - Mazdaknp.arange(nrows)
可以工作,但使用冒号:
就不行吗?@Kasramvd 我认为冒号相当于“使用所有行”,而np.arange(nrows)
默认为np.array([0,1,2,...,nrows-1])
,这与使用所有行是一样的。是因为你需要明确地声明每个行索引,因为如果你提供了它,numpy 会压缩行、列,但如果你使用冒号,它就不会执行任何压缩?这是我的猜想。 - Corey Levinson