Когда вы говорите test['ifAction']
, вы видите данные.
Когда вы говорите test[['ifAction','ifDocu']]
, вы используете необычную индексацию и, таким образом, получаете копию данных. Копия вам не поможет, поскольку изменение копии оставляет исходные данные без изменений.
Таким образом, способ обойти это - присвоить значения test['ifAction']
и test['ifDocu']
индивидуально:
test['ifAction'][0]=1
test['ifDocu'][0]=1
Например:
import numpy as np
test=np.rec.array([(0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0),
(0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0)],
dtype=[('ifAction', '|i1'), ('ifDocu', '|i1'), ('ifComedy', '|i1')])
print(test[['ifAction','ifDocu']])
# [(0, 0) (0, 0) (0, 0) (0, 0) (0, 0) (0, 0) (0, 0) (0, 0) (0, 0) (0, 0)]
test['ifAction'][0]=1
test['ifDocu'][0]=1
print(test[['ifAction','ifDocu']][0])
# (1, 1)
test['ifAction'][0:10]=1
test['ifDocu'][0:10]=1
print(test[['ifAction','ifDocu']])
# [(1, 1) (1, 1) (1, 1) (1, 1) (1, 1) (1, 1) (1, 1) (1, 1) (1, 1) (1, 1)]
Чтобы глубже заглянуть под капот, см. этот пост Роберта Керна .