1
我想将矩阵的N个值分配给长矩阵列中的N个条目,其中a布尔值掩码选择N条目。我做错了,因为大矩阵保持不变。请参见下一个示例:在numpy中,如何将大小为N的数组分配给具有布尔掩码的较大阵列
大矩阵中的每个条目都包含一个时间戳,一个有效标志和一个空字段,以及自上一个有效条目以来的时间。我要计算这些时间流逝:
a = np.array([(0,0,0),
(1,0,0),
(2,1,0),
(3,1,0),
(4,1,0),
(5,0,0),
(6,0,0),
(7,0,0),
(8,1,0),
(9,1,0)],
dtype=np.dtype([('time', '<i4'), ('ena', '|b1'), ('elapsed', '<i4')]))
计算与先前东窗事发项时差:
elapsed = a[a['ena']]['timestamp'][1:] - a[a['ena']]['timestamp'][0:-1]
经过将[1,1,4,1],(这是我想要的东西)。 现在我想经过秒写入原始数组:
a[a['ena']]['step_secs'][1:] = timestep
没有警告或错误,但保持不变,虽然我的预期:
a = np.array([
(0,0,0),
(1,0,0),
(2,1,0),
(3,1,1),
(4,1,1),
(5,0,0),
(6,0,0),
(7,0,0),
(8,1,4),
(9,1,1)]
我应该怎么办呢?非常感谢。
谢谢!这真的有帮助。我最后做了什么,以避免切割面具,并在最后留下智能索引:
stepsecs = np.concatenate(([0], stepsecs))
a['step_secs']['ena'] = stepsecs
这没有把戏。 我想我会报告这是一个numpy错误:聪明的索引应该不会默默地失败 - 它应该或者(I)预期或抛出异常。 – Lobotomik 2012-03-27 12:23:46
对不起,在上面的回复格式非常糟糕 - 我无法弄清楚如何使它在视觉上可以接受的5'允许编辑。 – Lobotomik 2012-03-27 12:30:42
我不确定这是不可能的,如果在python级别没有改变,或者对numpy的工作方式做了很多修改,有人已经提交了关于此的票。 http://projects.scipy.org/numpy/ticket/224 – 2012-03-27 15:57:01