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é:要嚴格執行*兩行*的要求,你有一個選擇低效的代碼或偷偷摸摸的捷徑。我懷疑這可能是錯誤的代碼寫入兩行,但我希望解決方案就地管理,所以謝謝! –