保留一个切片的尺寸从numpy的3D阵列
问题描述:
我有一个三维阵列,a
,形状的说a.shape = (10, 10, 10)
保留一个切片的尺寸从numpy的3D阵列
切片时,将尺寸为squeezed
自动即
a[:,:,5].shape = (10, 10)
I” d要保留尺寸的数量,但也要确保被挤压的尺寸是显示1的尺寸,即
a[:,:,5].shape = (10, 10, 1)
我曾经想过重新铸造阵列和传递ndmin
,但只是增加了额外的尺寸形状元组的开始,无论片从阵列中a
原来的地方。
答
a[:,:,[5]].shape
# (10,10,1)
a[:,:,5]
是basic slicing一个例子。
a[:,:,[5]]
是integer array indexing的一个例子 - combined with basic slicing。使用整数数组索引时,生成的形状始终为。由于[5]
(作为阵列)具有形状(1,)
, a[:,:,[5]]
最终形状(10,10,1)
。
谢谢,但是我应该补充说我正在实现'__getitem__'方法,所以我不愿意改变切片参数 - 请参阅编辑 – Brendan 2010-04-14 18:58:31
numpy的索引规则足够复杂。创建一个修改这些规则的'__getitem__'可能会造成麻烦。要求对象的用户了解numpy的规则并传递正确的索引不是更好吗? – unutbu 2010-04-14 19:05:11
非常好,你能介绍一下解释这种行为的numpy文档吗? – 2015-06-23 07:07:10