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