2
This post標識了我想禁用的「功能」。
當前numpy的行爲:禁用numpy花哨索引和分配?
>>> a = arange(10)
>>> a[a>5] = arange(10)
array([0, 1, 2, 3, 4, 5, 0, 1, 2, 3])
這是一個問題的原因是:說我想要一個數組有斷點的兩側(例如,用於製作「破冪律」或兩個不同的價值觀一些其他簡單的分段功能)。我可能會不小心做這樣的事情:
>>> x = empty(10)
>>> a = arange(10)
>>> x[a<=5] = 0 # this is fine
>>> x[a>5] = a**2 # this is not
# but what I really meant is this
>>> x[a>5] = a[a>5]**2
第一種行爲,x[a>5] = a**2
得到的東西我會有悖常理考慮 - 左側和右側的形狀不同意和右側是不是標量,但numpy的讓我做這個任務。正如另一篇文章所指出的,x[5:]=a**2
是不允許的。
所以,我的問題:有沒有辦法讓x[a>5] = a**2
籌集Exception
而不是執行任務?我非常擔心我的代碼中隱藏了拼寫錯誤,因爲我之前從未懷疑過這種行爲。
酷,這是一個不錯的解決方法 - 我現在開始在我的代碼中使用它。畢竟...顯式>隱式... – keflavich 2012-03-28 16:15:11