4d配列をどのように「記述する」のですか?我々は一致する直感を持っていません。私たちができることは、2次元の経験からのプロジェクトです。行、列、面、??
この配列は、実際の印刷を示すのに十分に小さい。
In [271]: arr = np.arange(24).reshape(3,2,2,2)
In [272]: arr
Out[272]:
array([[[[ 0, 1],
[ 2, 3]],
[[ 4, 5],
[ 6, 7]]],
[[[ 8, 9],
[10, 11]],
[[12, 13],
[14, 15]]],
[[[16, 17],
[18, 19]],
[[20, 21],
[22, 23]]]])
プリント[]は、余分な空白行を持つ高次元をマーク。
In [273]: arr.swapaxes(0,2)
Out[273]:
array([[[[ 0, 1],
[ 8, 9],
[16, 17]],
[[ 4, 5],
[12, 13],
[20, 21]]],
[[[ 2, 3],
[10, 11],
[18, 19]],
[[ 6, 7],
[14, 15],
[22, 23]]]])
実際に行われているものを参照するには、我々は配列の基礎となる性質を見ている
In [274]: arr.__array_interface__
Out[274]:
{'data': (188452024, False),
'descr': [('', '<i4')],
'shape': (3, 2, 2, 2),
'strides': None, # arr.strides = (32, 16, 8, 4)
'typestr': '<i4',
'version': 3}
In [275]: arr.swapaxes(0,2).__array_interface__
Out[275]:
{'data': (188452024, False),
'descr': [('', '<i4')],
'shape': (2, 2, 3, 2),
'strides': (8, 16, 32, 4),
'typestr': '<i4',
'version': 3}
data
属性は同じです - スワップとデータバッファを共有し、ビューであります元の。だから数字は動かされない。
シェイプの変更は明らかです。これは、スワップすることです。場合によっては、すべてのディメンションを異なるものにすることができます。 (2,3,4)
また、値が2 strides
に変更されましたが、ディスプレイにどのように影響するか説明するのは難しいですが。形状とストライドがどのように連携して(フラット・データ・バッファから)多次元配列を作成するかを知る必要があります。