Массив для перечисления Python - PullRequest
0 голосов
/ 21 июня 2019

Мне нужно преобразовать массив NumPy в список

[ [1.        ] [0.89361702] [0.4893617 ] [0.44680851] [0.0212766 ] [0.        ] ]

это в

[ 1 ,0.89361702, 0.4893617,  0.44680851 ,0.0212766 ,0]

Но когда я использую

duration= du.tolist()

продолжительность выглядит следующим образом

[[1.0],
[0.8936170212765937],
[0.4893617021276597],
[0.4468085106382951],
[0.02127659574468055],
[0.0]]

Пожалуйста, игнорируйте количество десятичных знаков

Ответы [ 4 ]

3 голосов
/ 21 июня 2019

Используйте du.reshape(-1).tolist(). reshape(-1) возвращает представление (когда это возможно) сглаженного массива, поэтому оно минимизирует накладные расходы по сравнению с flatten, который создает копию.

1 голос
/ 21 июня 2019

очень просто:

[ls[0] for ls in arr]

Надеюсь, это поможет

1 голос
/ 21 июня 2019

Удивлен, никто не предложил метод flatten из numpy (doc) . По большей части это тот же метод, который был предложен @ Gilles-Philippe Paillé ravel.

Один пример:

import numpy as np

data = [[1.0],
        [0.89361702],
        [0.4893617],
        [0.44680851],
        [0.0212766],
        [0.0],]
array = np.array(data, dtype=float)

my_list= array.flatten().tolist()

print(my_list)
# [1.0, 0.89361702, 0.4893617, 0.44680851, 0.0212766, 0.0]
0 голосов
/ 21 июня 2019

Я сделал это так.

dura = [[1.0],
[0.8936170212765937],
[0.4893617021276597],
[0.4468085106382951],
[0.02127659574468055],
[0.0]]
new = []
for x in dura:
    if len(x)== 1:
        new.append(x[0])

и получил это при печати нового

[1.0, 0.8936170212765937, 0.4893617021276597, 0.4468085106382951, 0.02127659574468055, 0.0]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...