[英]How to select a row in a numpy structured array and set a value?
我有一个 numpy 结构化数组,如下所示:
>>> arr
array([('2020-03-26T21:30', 0, 0.),
('2020-03-26T21:31', 1, 0.),
('2020-03-26T21:32', 2, 0.), ...,
('2020-03-27T22:27', 1497, 0.),
('2020-03-27T22:28', 1498, 0.),
('2020-03-27T22:29', 1499, 0.)],
dtype=[('time', '<M8[m]'), ('idx', '<i4'), ('value', '<f4')])
我想选择某一行并将其值设置为某个值。 我怎样才能做到这一点?
我试过这个:
>>> arr[ np.where(arr['time'] == np.datetime64('now', 'm')) ]['value'] = 10
但它似乎只是提取行并从原始数组中创建一个新数组。 如何实际设置一个值并将其保留在原始数组中?
一般来说,如果你想为现有数组赋值,你需要将值赋值给原始视图,而不是副本。 当您以这种方式使用数组索引时,您总是会得到一个副本,正如您所意识到的。
在记录数组的情况下,您可以通过首先访问该字段来获取视图:
>>> arr['value'][numpy.where(arr['time'] == b'2020-03-26T21:31')] = 100
>>> arr
array([(b'2020-03-26T21:30', 0, 0.),
(b'2020-03-26T21:31', 1, 100.),
(b'2020-03-26T21:32', 2, 0.),
(b'2020-03-27T22:27', 1497, 0.),
(b'2020-03-27T22:28', 1498, 0.),
(b'2020-03-27T22:29', 1499, 0.)],
dtype=[('time', 'S20'), ('idx', '<i4'), ('value', '<f4')])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.