LINUX.ORG.RU

numpy delete column (IndexError: tuple index out of range)

 ,


0

1

Текстовый файл file1.txt (табуляции, CSV):

2	20.0	3	4	5	6	7
1	15.0	3	4	5	6	7
3	5.0	3	4	5	6	7

#!/usr/bin/python3.2
# -*- coding: utf-8 -*-

from numpy import genfromtxt, concatenate, int64
import numpy as np

m1 = genfromtxt(
  "file1.txt",
  usecols = [0, 2,],
  names = ["0","1"],
  filling_values = 0
  )

print(m1)
print(m1.flags)

# m1.flags.writeable = False

print(np.delete(m1, np.s_[1:2], axis = 1))

При запуске, test_delete.py выдает:

Traceback (most recent call last):
  File "test_delete.py", line 19, in <module>
    print(np.delete(m1, np.s_[1:2], axis = 1))
... function_base.py", line 3334, in delete
    N = arr.shape[axis]
IndexError: tuple index out of range

Почему?

Как правильно удалить столбец с индексом 1? Пробовал всяко - не получается ...

★★★★★

«удалить столбец» через numpy? в батарейсках есть же функции для работы с csv

или я не понял задачу

Deleted ()
Ответ на: комментарий от Deleted

или я не понял задачу

исходная задача: есть отсортированный массив
m.sort(order=...)
, из него надо удалить один столбец.

pacify ★★★★★ ()

например, можно так:

 arr = array([[0,1,2,3,4],[5,6,7,8,9]])
 print arr[:,range(0,2)+range(3,5)]
столбец по центру удален

C ()
Ответ на: комментарий от C

например, можно так:
столбец по центру удален

Ok. На первое время покатит. Непонятно только, как numpy.array преобразовать
к изменяемому массиву (строки - в виде [], столбцы у него - в виде () by-default).

pacify ★★★★★ ()
Ответ на: комментарий от C

arr.tolist?

ммм ... стрёмно как-то - перекидывать тонны данных из одного формата в другой
да и по скорости непонятно как ... сорцы питон ведь не читаем каждый день
я лучше первым способом - с соединением двух половинок матрицы

pacify ★★★★★ ()
Ответ на: комментарий от pacify

изменяемому массиву (строки - в виде [], столбцы у него - в виде () by-default).

names задаёт тип. У тебя массив элементов твоего типа, а не двумерный массив, поэтому delete не работает, как ты ожидаешь.

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.