1
我不确定正确的术语来搜索以找到正确的优化。我想将下面最后四行代码简化为两行,其中+/- 1
的添加分别在赋值为plus
和minus
变量时完成。在分配期间修改numpy索引
# generic params to simulate loop conditions
position = np.arange(10)
axis = 2
# actual code to optimise
plus = np.asarray(position)
plus[axis] += 1
minus = np.asarray(position)
minus[axis] -= 1
为了澄清这是一个迭代的问题:不采用通用position
或axis
变量是错的,即明确以下的任何解决方案都没有解决方案:
plus = np.asarray([0,1,3,3,4,5,6,7,8,9])
plus = np.asarray(range(axis)+[position[axis]+1]+range(axis+1,len(position)))
出于本能,我还以为你骗用'np.arange(position.size)'!这实际上是一个非常好的解决方案,并且**完全**我之后的事情。 *虽然只是将它们组合在一个元组中,但在我的书中肯定会作弊,因为我们不妨使用分号! (:* - 我也喜欢布尔逻辑使用框外的好想法 –
@AlexanderMcFarlane那么,如果你是那么严格,你可以做'position + np.in1d(np.arange(position.size),axis)'和'position - np.in1d(np.arange(position.size),axis)'。但是这有点冗余代码。所以,你知道:) – Divakar
touché:要严格执行*两行*的要求,你有一个选择低效的代码或偷偷摸摸的捷径。我怀疑这可能是错误的代码写入两行,但我希望解决方案就地管理,所以谢谢! –