假设我有以下numpy数组:
>>> a=np.zeros(10)
>>> a
array([ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])
我可以使用numpy.ufunc.at就地修改该数组:
^{pr2}$如果我现在尝试矩阵,我假设的方法不起作用:
>>> m=np.zeros(16).reshape(4,4)
>>> m
array([[ 0., 0., 0., 0.],
[ 0., 0., 0., 0.],
[ 0., 0., 0., 0.],
[ 0., 0., 0., 0.]])
>>> np.add.at(m, [(0,0),(1,1)], 2)
>>> m
array([[ 0., 4., 0., 0.],
[ 0., 0., 0., 0.],
[ 0., 0., 0., 0.],
[ 0., 0., 0., 0.]])
基于提供[(0,0),(1,1)]
的元组列表,我的期望是:
[[ 2., 0., 0., 0.],
[ 0., 2., 0., 0.],
[ 0., 0., 0., 0.],
[ 0., 0., 0., 0.]]
有什么建议可以作为numpy.ufunc.at
中的索引列表来得到这个矩阵吗?在
如果要进行多维索引,则不传递索引元组的列表;而传递索引列表(或索引数组)的元组。在
^{pr2}$indices[0]
给出要修改的单元格的所有第一个坐标,indices[1]
给出所有第二个坐标。下面是一个例子:我不太清楚为什么会这样。我想,一旦掌握了窍门,它可能会更方便,或者它可能会使规则在某种程度上更加内部一致,但我没有足够的多维索引经验来说明这种或那种方式。在
相关问题 更多 >
编程相关推荐