は、私がデータ・バッファ・アドレスを含む、属性を見ての方法として__array_interface__
を好む:
In [766]: A = np.arange(12)
In [767]: B = A.reshape(3,4)
In [768]: A[0] = 42
In [769]: A
Out[769]: array([42, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11])
In [770]: B
Out[770]:
array([[42, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
In [771]: A.data
Out[771]: <memory at 0xb16ef5dc>
In [772]: B.data
Out[772]: <memory at 0xb1719cdc>
In [773]: A.__array_interface__
Out[773]:
{'data': (156295616, False),
'descr': [('', '<i4')],
'shape': (12,),
'strides': None,
'typestr': '<i4',
'version': 3}
In [774]: B.__array_interface__
Out[774]:
{'data': (156295616, False),
'descr': [('', '<i4')],
'shape': (3, 4),
'strides': None,
'typestr': '<i4',
'version': 3}
A.__array_interface__['data'][0]
値はA.data
ため
ドキュメントを一致させるんです。
Pythonのバッファ配列のデータの先頭を指すオブジェクト
しかし、誤解を招く恐れがある通常のPythonプログラマにとっては、 @ajcr
さんのコメントが優れています。 「バッファオブジェクト」と配列データバッファのアドレスとの間には相違があります。私はあまりdata
属性を使用していない
============
。いくつかの例の一つは、ndarray
機能
how can I specify the memory address of a Numpy array using ctypes?
In [806]: np.ndarray((4,),buffer=A.data, dtype=int, offset=12)
Out[806]: array([3, 4, 5, 6])
In [807]: np.ndarray((4,),buffer=B.data, dtype=int, offset=16)
Out[807]: array([4, 5, 6, 7])
================
A.data
だけでプリントを使用してアレイを作成してきましたそのrepr
、と同じように非有益であるとして:
In [808]: o=object()
In [809]: o
Out[809]: <object at 0xb729fc90>
'A.data == B.data'は、2つのPythonのmemoryviewオブジェクト(バフのないメモリアドレスを比較し、これらは形状/ストライド情報が異なるために不等である。 –