Как присвоить значение множеству условных фрагментов массива numpy - PullRequest
0 голосов
/ 07 мая 2020
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)

Я попытался присвоить срезу новое значение 234,7, но это не сработало:

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

1 Ответ

0 голосов
/ 07 мая 2020

Использование [0][2] индексации вместе с булевой маской создает копию и изменяет содержимое копии. Чтобы изменить исходный массив, вы можете изменить индексирование, переместив 2 внутри индексации, чтобы предотвратить создание копии:

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

output:

[[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]]
...