Можно ли преобразовать вложенный список кортежей в массив numpy? - PullRequest
0 голосов
/ 25 февраля 2020

У меня есть вложенный список кортежей:

tuple_list = [[(0, 0.022190866145025672),
  (1, 0.03713307553569147),
  (2, 0.03329292095418187),
  (3, 0.013397487788645558),
  (4, 0.012968754425823006),
  (5, 0.02303938132767878),
  (6, 0.5055000245070915),
  (7, 0.02148198409145118)],
 [(0, 0.027141399289287292),
  (1, 0.034094330130799384),
  (2, 0.18793352530921031),
  (3, 0.01545954116652308),
  (4, 0.03658418672184262),
  (5, 0.1929824217980975),
  (6, 0.021051003033754387),
  (7, 0.03489076576637312)]]

Как вы можете, вложенные списки имеют одинаковую длину.

Возможно ли преобразовать его в массив numpy ?

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

y = numpy.array(tuple_list)

Но я получаю такой результат:

array([list([(0, 0.022190866145025672), (1, 0.03713307553569147), (2, 0.03329292095418187), (3, 0.013397487788645558), (4, 0.012968754425823006), (5, 0.02303938132767878), (6, 0.5055000245070915), (7, 0.02148198409145118), (8, 0.028544808844256947), (9, 0.023656766961056515), (10, 0.058975765442311284), (11, 0.052628865356187236), (12, 0.019632103194206267), (13, 0.017715501743987942), (14, 0.013181486857172771), (15, 0.03693920037515881), (16, 0.059811388273952625), (17, 0.019909618176120435)]),
       list([(0, 0.027141399289287292), (1, 0.034094330130799384), (2, 0.18793352530921031), (3, 0.01545954116652308), (4, 0.03658418672184262), (5, 0.1929824217980975), (6, 0.021051003033754387), (7, 0.03489076576637312), (8, 0.027263833771125616), (9, 0.022274146808526914), (10, 0.1321132498202665), (11, 0.034287197030052854), (12, 0.021483869200653788), (13, 0.033468696091416075), (14, 0.014070713898823948), (15, 0.029487668742227795), (16, 0.025213173521698867), (17, 0.11020027789932013)])

Мой желаемый результат будет быть таким:

array([[(0, 0.022190866145025672),
  (1, 0.03713307553569147),
  (2, 0.03329292095418187),
  (3, 0.013397487788645558),
  (4, 0.012968754425823006),
  (5, 0.02303938132767878),
  (6, 0.5055000245070915),
  (7, 0.02148198409145118)],
  [(0, 0.027141399289287292),
  (1, 0.034094330130799384),
  (2, 0.18793352530921031),
  (3, 0.01545954116652308),
  (4, 0.03658418672184262),
  (5, 0.1929824217980975),
  (6, 0.021051003033754387),
  (7, 0.03489076576637312)]])

В качестве дополнительной информации мне нужен вложенный список в массиве для вычисления расхождения Джезена-Шеннона между двумя распределениями.

1 Ответ

1 голос
/ 25 февраля 2020

Привет, я сделал это традиционным для l oop способом:

Да, вы можете преобразовать кортеж в список, используя list() метод

  tuple_lists =[[(0, 0.022190866145025672),
  (1, 0.03713307553569147),
  (2, 0.03329292095418187),
  (3, 0.013397487788645558),
  (4, 0.012968754425823006),
  (5, 0.02303938132767878),
  (6, 0.5055000245070915),
  (7, 0.02148198409145118)],
 [(0, 0.027141399289287292),
  (1, 0.034094330130799384),
  (2, 0.18793352530921031),
  (3, 0.01545954116652308),
  (4, 0.03658418672184262),
  (5, 0.1929824217980975),
  (6, 0.021051003033754387),
  (7, 0.03489076576637312)]]

temp=[]
tuple_into_list=[]
for tuple_list in tuple_lists:  # looping through list of elements and those elements contains tuples
    for tuple_item in tuple_list:
        temp.append(list(tuple_item))  #converting tuple into list and adding it into a list object
    tuple_into_list.append(temp) #finally adding a temp object which is a collection of converted tuple into list 
    temp=[] #make it empty so in another iteration the converted tuple  into list of elements will be there

tuple_into_list

Выход

[[[0, 0.022190866145025672],
  [1, 0.03713307553569147],
  [2, 0.03329292095418187],
  [3, 0.013397487788645558],
  [4, 0.012968754425823006],
  [5, 0.02303938132767878],
  [6, 0.5055000245070915],
  [7, 0.02148198409145118]],
 [[0, 0.027141399289287292],
  [1, 0.034094330130799384],
  [2, 0.18793352530921031],
  [3, 0.01545954116652308],
  [4, 0.03658418672184262],
  [5, 0.1929824217980975],
  [6, 0.021051003033754387],
  [7, 0.03489076576637312]]]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...