データを保持するクラス (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])
is a 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 内に存在することを意味します。