說我有一個numpy的數組x:的Python:在numpy的陣列高效運營
x = array([[ 3, 2, 1],
[ 3, 25, 34],
[ 33, 333, 3],
[ 43, 32, 2]])
我要執行以下操作沒有明確地寫一個for循環即表示它使用內置的自動方法循環;
1)的所有1即
x = array([[ 3, 1, 1],
[ 3, 1, 34],
[ 33, 1, 3],
[ 43, 1, 2]])
2)在原始陣列的列替換第二列中,替換與第二和第三的產物第三列即
x = array([[ 3, 2, 1*2],
[ 3, 25, 34*25],
[ 33, 333, 3*333],
[ 43, 32, 2*32]])
3 )最後,我想根據條件替換原始陣列中的第二列,例如
x[1] = 0 if x[0] > 5 else 4
即陣列現在看起來像:
x = array([[ 3, 4, 1],
[ 3, 4, 34],
[ 33, 0, 3],
[ 43, 0, 2]])
有什麼建議嗎? 謝謝!
可以使用做了' while循環和每個循環遞增的迭代器變量。請問爲什麼你不能使用'for'循環? – Cheezey 2012-07-23 00:27:39
該陣列可能會變得非常高,即表示可能會重複數百次的百萬個元素。使用明確的for循環會增加很多開銷。因此,我轉而使用'numpy array'來代替'lists',這樣跳躍就會出現某種向量化的解決方案。 – 2012-07-23 00:30:43