Как разбить массив 1d numpy на многомерный массив - PullRequest
0 голосов
/ 16 марта 2020

У меня есть массив numpy, который является одномерным, но каждый элемент содержит цифры и буквы. Я хочу разделить каждый элемент, чтобы я мог получить определенные c номера, которые мне нужны. Код ниже:

    my_array = [' profile    : (   99.27,    99.19)   20.82      1.75    4.40    0.86    22.05\n'
    ' profile    : (   99.80,    99.04)   22.82      1.00    5.02    0.79    33.88\n'  
    ' sersic    : (  100.15,    99.59)   25.23      1.79    4.00    0.58   -53.98\n'
    ' sersic    : (  100.31,    99.45)   18.97     10.22    3.00    0.35   -73.86\n']

Итак, как видно из приведенного выше примера, мой код считает, что мой массив состоит из 4 элементов. Я хочу разделить каждый элемент так, чтобы я мог получить 3-е, 4-е и 5-е числа (поэтому в этом примере я хотел бы получить 20,82, 1,75, 4,40, 22,82, 1, 5,02 и т. Д. c ...).

Есть ли способ сделать это?

1 Ответ

0 голосов
/ 16 марта 2020

Вы можете использовать понимание списка до go через строки и разбить их, чтобы разбить их на подстроки, затем выбрать нужные значения (с этого момента конец кажется более простым) и преобразовать их в float:

my_array = [
' profile    : (   99.27,    99.19)   20.82      1.75    4.40    0.86    22.05\n',
' profile    : (   99.80,    99.04)   22.82      1.00    5.02    0.79    33.88\n',  
' sersic    : (  100.15,    99.59)   25.23      1.79    4.00    0.58   -53.98\n',
' sersic    : (  100.31,    99.45)   18.97     10.22    3.00    0.35   -73.86\n'
]

matrix = [ list(map(float,line.split()[-5:-2])) for line in my_array]

вывод:

print(matrix)

[
  [20.82, 1.75, 4.4], 
  [22.82, 1.0, 5.02], 
  [25.23, 1.79, 4.0], 
  [18.97, 10.22, 3.0]
]
...