Python 如何在numpy结构化数组中选择一行并设置值?

Python 如何在numpy结构化数组中选择一行并设置值?,python,numpy,Python,Numpy,我有一个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

我有一个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['value'][numpy.where(arr['time']==b'2020-03-26T21:31')]=100
>>>啊
数组([(b'2020-03-26T21:30',0,0.),
(b'2020-03-26T21:31',1100),
(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','尝试将字段索引放在首位谢谢您的帮助!
>>> 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')])