如何为 numpy 数组的多个条件切片赋值

How to assign value to multiple condition slice of an numpy array

import numpy as np

minute = datetime.datetime(year,month,day,9,15,00,000000)
minute1 = minute + timedelta(minutes = 1)
main_array = np.array([[681985, minute , 2.0, 3.0], [70913, minute , 5.0, 6.0]])
temp_array = np.array([[681985, minute1 , 2.0, 3.0]])
main_array = np.concatenate((main_array, temp_array))
main_array

array([[681985, datetime.datetime(2020, 5, 7, 9, 15), 2.0, 3.0],
       [70913, datetime.datetime(2020, 5, 7, 9, 15), 5.0, 6.0],
       [681985, datetime.datetime(2020, 5, 7, 9, 16), 2.0, 3.0]],
      dtype=object)

I tried assigning new value 234.7 to the slice but it does not work:

main_array[(main_array[:,0] == 681985) & (main_array[:,1] == minute)][0][2] = 234.7

使用 [0][2] 索引和布尔掩码创建一个副本并更改副本的内容。为了更改原始数组,您可以通过在索引中移动 2 来更改索引以防止创建副本:

main_array[(main_array[:,0] == 681985) & (main_array[:,1] == minute), 2] = 234.7

输出:

[[681985 datetime.datetime(2020, 5, 7, 9, 15) 234.7 3.0]
 [70913 datetime.datetime(2020, 5, 7, 9, 15) 5.0 6.0]
 [681985 datetime.datetime(2020, 5, 7, 9, 16) 2.0 3.0]]