我想给一个长得多的矩阵列中的N个条目分配一个长矩阵N个值,其中一个布尔掩码选择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')]))
要计算与以前未屏蔽条目的时差,请执行以下操作:
^{pr2}$经过的时间是[1,1,4,1],(这是我想要的)。 现在,我要将经过的秒数写入原始数组:
a[a['ena']]['step_secs'][1:] = timestep
没有警告或错误,但a保持不变,尽管我预期:
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)]
我该怎么做?非常感谢。在
numpy的人已经做了一些惊人的魔术,使花哨的索引(包括布尔索引)的工作一样好。这个魔术非常令人印象深刻,但是它仍然不能处理复杂的索引,然后在赋值的左边进行更多的索引,例如
a[fancy][index2] = something
。下面是一个简单的例子:我认为这是一个bug,我想知道是否有可能捕捉到它并引发一个错误,而不是让它默默地失败。但回到你的问题上,最简单的解决方法似乎是替换:
^{pr2}$有:
或者可能:
相关问题 更多 >
编程相关推荐