Распакуйте массив NumPy - PullRequest
       2

Распакуйте массив NumPy

0 голосов
/ 10 сентября 2018

Я пытаюсь распечатать два столбца по отдельности для переменной, полученной с помощью функции архивирования двух переменных. Пожалуйста, найдите ниже:

x5 = list(zip(x3,x4))
x6 = np.array(x5)
print(x6)

Применение функции:

n = 1 
br = myfunction(x3,x4,n)

print('this is the result ... ',  br)

Обратите внимание, как предлагается, воспроизводимый способ генерирования данных для выходных данных типа myfunction:

   br = numpy.random.rand((5, 2))

Вывод выглядит так:

finally result ... [[[5.37692693e+03 3.78425697e- 
 03]
  [1.36092539e+03 3.35722632e-03]
  [5.43477586e+03 3.90104194e-03]
   ...
  [5.93759455e+03 4.05490440e-03]
  [3.00855802e+03 3.65746871e-03]
  [4.69875286e+03 3.93713784e-03]]]

Я пробовал много методов, таких как: Во-первых:

  x10,x11 = zip(*br)
  print(x10,x11) /print(np.array(x10),np.array(x11)) 

Не сработала, выдавая ошибку (слишком много значений для распаковки двух)

Второе:

def column(matrix,i):
    return [row[i] for row in matrix]

 x10 = column(br,0)
 x11 = column(br,1)

 print(x10,x11)

Для которого вывод:

 [array([5.37692693e+03, 3.78425697e-03])] 
 [array([1.36092539e+03, 3.35722632e-03])]

и третье:

   x11 = [i[0] for i in br]
   x12 = [i[1] for i in br]
   print(x11.split(),x12.split())

Я считаю, что это не работает, потому что вывод моей функции имеет тип [[[....]]]

Большое спасибо

Ответы [ 2 ]

0 голосов
/ 10 сентября 2018

Другое возможное решение -

br = [[[5.37692693e+03, 3.78425697e-03],  [1.36092539e+03, 3.35722632e-03],  [5.43477586e+03, 3.90104194e-03],  [5.93759455e+03, 4.05490440e-03],  [3.00855802e+03, 3.65746871e-03],  [4.69875286e+03, 3.93713784e-03]]]

x10,x11 = zip(*br[0])
print(x10,x11) 

выход

(5376.92693, 1360.92539, 5434.77586, 5937.59455, 3008.55802, 4698.75286) (0.00378425697, 0.00335722632, 0.00390104194, 0.0040549044, 0.00365746871, 0.00393713784)
0 голосов
/ 10 сентября 2018

Вы можете распаковать только первое измерение массива, но измерение, которое вы хотите распаковать, является вторым. Это означает, что в вашем случае вы можете сделать:

x10, x11 = br.T

Имейте в виду, что x10 и x11 будут представлением br! Это означает, что если вы измените любое из значений в любом из этих массивов, вы также измените и другие переменные.

Если ваш массив имеет более двухмерных размеров (дополнительно [ и ]), проверьте форму массива, используя

br.shape

и если вы видите лишние пустые размеры (1), удалите их, используя

br = br.squeeze()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...