Как удалить конкретный элемент в массиве 3D NumPy - PullRequest
1 голос
/ 04 июля 2019

Я пытаюсь проанализировать биологические данные, и у меня есть список массивов следующим образом:

[[['ENSMUSG00000000001' '-0.072141867' '0.153569137']
  ['ENSMUSG00000000028' '-0.031985346' '0.537383098']
  ['ENSMUSG00000000037' '0.046097573' '0.727492292']]

 [['ENSMUSG00000000001' '0.422529239' '4.86E-24']
  ['ENSMUSG00000000028' '-0.036262661' '0.393367015']
  ['ENSMUSG00000000037' '0.070899297' '0.427056034']]

 [['ENSMUSG00000000001' '0.117877802' '0.000480518']
  ['ENSMUSG00000000028' '0.122150713' '0.000368726']
  ['ENSMUSG00000000037' '0.009156006' '0.912776746']
  ['ENSMUSG00000110411' '-1.67014277' '7.92E-05']
  ['ENSMUSG00000110415' '-0.103612996' '0.606599177']
  ['ENSMUSG00000110424' '0.357829407' '0.053448692']]]

и я хотел бы удалить несколько самых маленьких списков. Например, для списка индексов, который нужно удалить как

[(0,1),(1,2),(2,3)]

и я хотел бы получить:

[[['ENSMUSG00000000001' '-0.072141867' '0.153569137']
  ['ENSMUSG00000000037' '0.046097573' '0.727492292']]

 [['ENSMUSG00000000001' '0.422529239' '4.86E-24']
  ['ENSMUSG00000000028' '-0.036262661' '0.393367015']]

 [['ENSMUSG00000000001' '0.117877802' '0.000480518']
  ['ENSMUSG00000000028' '0.122150713' '0.000368726']
  ['ENSMUSG00000000037' '0.009156006' '0.912776746']
  ['ENSMUSG00000110415' '-0.103612996' '0.606599177']
  ['ENSMUSG00000110424' '0.357829407' '0.053448692']]]

Итак, я попробовал несколько решений с или без numpy, но ни одно из них не работает

Идея, на которой я сконцентрирован, была бы примерно такой (где tot - мой полный массив и указатель позиций элементов, от которых я хочу избавиться)

for e in delindex[::-1]:
    tot=np.delete(tot,e[1],e[0])

Но я всегда получаю ошибку:

IndexError: index 12263 is out of bounds for axis 2 with size 3

Как вы заметили, мой массив очень большой, поэтому я не могу использовать итеративные циклы на нем

1 Ответ

0 голосов
/ 04 июля 2019

Использование del:

d = [(0,1),(1,2),(2,3)]

for x, y in d:
    del lst[x][y]

где lst - ваш первоначальный список списков.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...