1
我有一個類包含數據(numpy ndarray),其中包括一個方法將數據存儲到墊文件(使用scipy.io.savemat)。數據可能非常大,所以我可能只想存儲一段數據。因此,我通過切片對象,像這樣:切片語法到對象
def write_mat(self, fn, fields=None, sel=None):
# (set fields and sel to sensible values if None)
scipy.io.savemat(fn, dict(data=self.data[fields][sel]))
這裏,fields
可以是字符串的列表(對於self.data
是結構化陣列),以及sel
是切片對象。當然,我不能直接將片語法傳遞到write_mat
:obj.write_mat(fn, fields, [::10])
是一個SyntaxError。當然,我可以通過slice(None, None, 10)
,但我不太喜歡這個解決方案。
有沒有任何內建的便利對象,可以讓我從片語法創建片對象?當然,這很容易實現:
In [574]: class Foo:
...: def __getitem__(self, item):
...: return item
...:
In [578]: slicer = Foo()
In [579]: slicer[::100]
Out[579]: slice(None, None, 100)
但即使對於容易實現的東西,可能已經有一個更標準的解決方案。在那兒?按照標準,我的意思是存在於Python,numpy或scipy中。
因爲重複的問題,接受的答案並沒有提到它:你想'np.s_ ',http://docs.scipy.org/doc/numpy/reference/generated/numpy.s_.html – ecatmur 2013-03-01 16:42:23
@ecatmur我認爲你仍然可以回答,即使它作爲重複關閉? – gerrit 2013-03-01 16:43:15