请放松一下我,因为我还是numpy的新手,并试图将我的头围绕着一些numpy的概念,我有这个问题:
问题
我有一个名为 @admin.register(User)
class UserModelAdmin(UserAdmin, ExportMixin):
...
fieldsets = (
(
_('Authentication'), {
'classes': (
'collapse',
),
'fields': (
'username',
'password',
'user_permissions',
'groups'
)
}
),
(
_('Status'), {
'fields': (
'is_active',
'is_staff',
'is_superuser'
)
}
),
...
)
inlines = (
DeviceTabularInline,
PaymentTabularInline
)
class DeviceTabularInline(admin.TabularInline):
model = Device
classes = ('collapse',)
...
class PaymentTabularInline(admin.TabularInline):
model = Payment
classes = ('collapse',)
...
的数字盒数组。
有2个框架,每个框架有200个框,每个框有4个坐标点。
我有一个名为{_1}}的布尔数组to_keep。对于每帧,都有200d数组来指示是否保留该框。
我想过滤掉boxes.shape = (2, 200, 4)
并仅保留to_keep.shape = (2, 200)
为真的那些。
我得到的形状应该是boxes
问题在于,对于第一帧,可能有25个框有效。但对于第二帧,可能有100盒有效。
如何有效地过滤掉numpy中的这种结构?
答案 0 :(得分:-1)
一个数组和布尔掩码:
In [309]: X = np.arange(2*10*3).reshape(2,10,3)
In [314]: mask = np.random.randint(0,2,(2,10)).astype(bool)
In [315]: mask
Out[315]:
array([[False, False, True, True, False, True, True, True, True,
True],
[False, True, True, True, False, True, False, True, True,
False]])
在第一维上迭代:
In [316]: [x[i,:] for x,i in zip(X,mask)]
Out[316]:
[array([[ 6, 7, 8],
[ 9, 10, 11],
[15, 16, 17],
[18, 19, 20],
[21, 22, 23],
[24, 25, 26],
[27, 28, 29]]),
array([[33, 34, 35],
[36, 37, 38],
[39, 40, 41],
[45, 46, 47],
[51, 52, 53],
[54, 55, 56]])]
通常,这样的蒙版每行具有不同数量的True,因此生成的蒙版列表无法重新构建为3d数组。