10バイトの配列メイク:
In [287]: x = np.arange(10, dtype=np.uint8)
In [288]: x
Out[288]: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9], dtype=uint8)
In [289]: x.__array_interface__
Out[289]:
{'data': (155596184, False),
'descr': [('', '|u1')],
'shape': (10,),
'strides': None,
'typestr': '|u1',
'version': 3}
In [290]: x.data
Out[290]: <memory at 0xaec88f34>
が同じデータバッファを使用して、ndarray
と別の配列を作成したが、オフセットと:
In [291]: y=np.ndarray(shape=(3,), dtype=x.dtype, buffer=x.data, offset=3)
In [292]: y
Out[292]: array([3, 4, 5], dtype=uint8)
In [293]: y.__array_interface__
Out[293]:
{'data': (155596187, False),
'descr': [('', '|u1')],
'shape': (3,),
'strides': None,
'typestr': '|u1',
'version': 3}
これは3要素と同じに見えますスライス:
In [294]: z=x[3:6]
In [295]: z
Out[295]: array([3, 4, 5], dtype=uint8)
In [296]: z.__array_interface__
Out[296]:
{'data': (155596187, False),
'descr': [('', '|u1')],
'shape': (3,),
'strides': None,
'typestr': '|u1',
'version': 3}
メモリアドレスの指定についてもっと知っていればdはbuffer
パラメータで取得し、デフォルトは0 offset
です。しかしあなたの追加から、offset
の使用はちょうどあなたが望むものかもしれません。
私は「これまでに何を試しましたか?」と尋ねるのは好きではありませんが、それでも人々は私にそうする傾向があります。 – nmnsud
'np.ndarray'は既存のデータバッファを持つ配列を作ることができます。 – hpaulj
詳細については、そのメモリアドレスは何ですか? – hpaulj