1
我試圖操縱根據用戶的決定一個N維數組,在該指數的陣列應該改變的值。這個例子正常工作:傳遞列表作爲切片中的N維數組numpy的
import numpy as np
a = np.arange(24).reshape(2,3,4)
toChange = ['0', '0', '0'] #input from user via raw_input
a[toChange] = 0
但是,如果我想改變的不僅僅是一個位置,而是一個完整的行,我碰到的問題:
toChange = ['0', '0', ':'] #input from user via raw_input
a[toChange] = 0
這將導致ValueError: setting an array element with a sequence
。 我可以看到問題是':'字符串,因爲a[0, 0, :] = 0
完全符合我的要求。問題是,如何將字符串傳遞給數組?
還是有操縱用戶定義的切片一個更聰明的方式?
PS:因爲我工作的一個oldstable的Debian的我使用Python 2.6.6和1.4.1 numpy的
感謝您的快速響應!這很好地工作在交互模式,但不知何故,在我的劇本我得到一個新的錯誤:'toChange = [0,0,片(無,無,無)] 類型錯誤:「numpy.ndarray」對象不callable'是有可能'toChange'被認爲是一個數組? – Gnihilo
使用元組來執行ND索引是可取的。列表/序列的使用取決於不穩定的邏輯,我個人更喜歡只是禁止它。 – seberg
好吧,我得到了這個問題:切片沒有工作,因爲操縱陣列之前,我整個數組寫入使用 '用打開文件(「出/ histData.txt」,「W」)爲數據文件: 在histData片: np.savetxt(數據文件,切片,FMT = 「%2F」,分隔符= 「\ t」 的)' 因此'slice'是一個ndarray整個事情沒有工作。業餘時間:-) @seberg:這個解決方案看起來如何? – Gnihilo