按索引删除数组中的掩码元素

时间:2016-12-13 10:54:05

标签: python arrays list indexing

我有三个数组,一个包含基于某些条件的屏蔽值:

a = numpy.ma.MaskedArray(other_array, condition)

(最初我使用了蒙面数组,因为我的条件是一个变量,它使得用其他数据集更容易绘图以保持我的数组固定长度。现在我导出我的数据以便由其他未编写的程序进行分析由我,它无法处理' - ')

所以我的数组有以下形式:

a = [1,--,3]
b = [4,5,6]
c = [7,8,9]

我想迭代a,识别包含掩码值的任何索引' - ',然后从所有数组中删除该索引:

a = [1,3]
b = [4,6]
c = [7,9]

实际上,b和c很长,掩盖的指数没有规则间隔。

谢谢!

2 个答案:

答案 0 :(得分:1)

如果只有3个列表,您可以使用 pop() 功能从列表B&中删除索引。 C.将索引传递给 pop() ,在列表A中为“ - ”。

for i in range(len(a)):
    if numpy.ma.is_masked(a[i]):
        b.pop(i)
        c.pop(i)

它将从列表B&中删除该索引。 C,其中' - '出现在列表A中。

答案 1 :(得分:0)

尝试克隆数组并弹出它并替换临时数组,如

a = [1,'--',3]
b = [4,5,6]
c = [7,8,9]
t=a[:]
for i in range(len(a)):
    try:
        value = int(a[i])
    except ValueError:
        t.pop(i)
        b.pop(i)
        c.pop(i)
a=t
print a
print b
print c

当屏蔽值具有相同的符号时,您也可以使用相等

a = [1,'--',3]
b = [4,5,6]
c = [7,8,9]
t=a[:]
for i in range(len(a)):
    if a[i]=='--':
        t.pop(i)
        b.pop(i)
        c.pop(i)
a=t
print a
print b
print c