Это способ достичь того, что вы хотите сделать без numpy:
def print_non_0_len_ge_1(li):
"""removes 0 from front/back of line, prints rest of line if > 1 consecutive letter
splitting at 0 between words."""
for line in li:
no_zero = ''.join(line).strip("0").split("0")
for p in no_zero:
if len(p)>1:
print(*p,sep="\n")
print("")
data = [['0', '0', '0', '0', '0', '0', '0', '0', '0', '0'],
['0', '0', '0', 'E', 'A', 'G', 'L', 'E', '0', '0'],
['0', '0', '0', '0', 'P', '0', '0', '0', '0', '0'],
['0', '0', '0', '0', 'P', '0', 'P', '0', '0', '0'],
['0', '0', '0', '0', 'L', '0', 'I', '0', '0', '0'],
['0', '0', '0', 'C', 'E', 'R', 'E', 'A', 'L', '0'],
['0', '0', '0', '0', '0', '0', '0', '0', '0', '0']]
# apply to lines
print_non_0_len_ge_1(data)
# apply to transposed data to get the columns
print_non_0_len_ge_1(zip(*data))
Вывод:
E
A
G
L
E
C
E
R
E
A
L
A
P
P
L
E
P
I
E
Вы можете решить это аналогично, используя numpy - простоудалите начальный / конечный 0, разделите на 0 и примените к нормальным и транспонированным данным.
У этого метода есть недостаток - вам нужно 0
между любыми несловообразующими символами в обоих направлениях, чтобы позволить емуработать (вы не можете использовать "EGG" начальная реклама "(E) agle", потому что вы получаете GP
дважды от него.