【发布时间】:2016-12-19 17:25:03
【问题描述】:
给定以下数组:
import numpy as np
a = np.array([[1,2,3], [4,5,6], [7,8,9], [10, 11, 12]])
我可以创建一个索引数组:
b = np.array([0, 2, 0, 1])
并使用索引从每一行中改变一个元素:
a[np.arange(4),b] += 10
产生:
[[11 2 3]
[ 4 5 16]
[17 8 9]
[10 21 12]]
有没有比a[np.arange(4),b] += 10更易读的方法来获得相同的结果?
【问题讨论】:
-
对我来说看起来不错。你觉得什么不可读?
-
对于像我这样的菜鸟来说有点神秘。我想知道我是否可以在
arange()周围工作。 -
如果我在那里正确理解了 readable 的解释,则将实现隐藏在具有 可读 代码的好名称的 func 中 :) 花很少的钱分钟
NumPy indexingdocs,这很有趣,相信我! -
您可以使用 cmets 使其更具可读性:-)
-
对于小尺寸数组
a[range(b.size), b]可能更易读?