Первое, что следует отметить, это то, что у вас есть структурированный массив Numpy массив.
Он должен быть создан с параметром dtype, в противном случае все типы полей будут U ... (строки Unicode определенного размера). Я создал такой массив, работающий:
a = np.array([
('2012-07', 'abc', 'EXECUTIVE', '149', '16 TO 18', 150., 1995, 'apt', 1000000),
('2012-10', 'abc', 'EXECUTIVE', '194', '22 TO 24', 163., 1987, 'ma', 1010000),
('2014-12', 'abc', 'EXECUTIVE', '190', '19 TO 21', 150., 1987, 'ma', 1000000)],
dtype='U7, U3, U10, i4, U10, f4, i4, U4, i4')
Обратите внимание, что даже если вы не передали имена полей (только типы, подобные приведенным выше), Numpy по-прежнему присваивает имена полей по умолчанию, как f0 , f1 и т. Д.
Чтобы напечатать имена полей, вы можете запустить, например, a.dtype.names
. В приведенном выше случае я получил:
('f0', 'f1', 'f2', 'f3', 'f4', 'f5', 'f6', 'f7', 'f8')
, поэтому, вероятно, ваша задача - удалить поле f7 (проверьте в своей среде). Возможно, у вас есть имена полей, явно назначенные вашим кодом, поэтому используйте вместо них предпоследнее имя.
Чтобы получить копию массива Numpy с удаленным столбцом, вы можете запустите:
import numpy.lib.recfunctions as rcf
b = rcf.drop_fields(a, 'f7')
или сохраните его обратно в a , если вы sh.
Замечание относительно решения, предложенного Джейсоном Ян :
Если вы запустите b.shape
, вы получите (3, 9)
, тогда как ваш образец содержит (3,)
, а массив, который я создал, имеет именно эту форму.
Значит, ваш массив должен быть создан каким-то другим способом, чем в его решении.