如何删除3D numpy数组中的特定元素

时间:2019-07-04 15:17:07

标签: python list numpy

我正在尝试分析生物学数据,并且具有如下数组列表:

[[['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是我的完整数组,而delindex是我想要摆脱的元素的位置)

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 :(得分:0)

使用del

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

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

其中lst是列表的原始列表。