Рассмотрим этот код:
#!/usr/bin/env python3
import numpy as np
aa = [
[3, 8, [37, 7, 5, 0, 5, 0, 8, 0]],
[3, 8, [36, 7, 5, 0, 4, 0, 8, 0]],
[3, 8, [37, 7, 5, 0, 4, 0, 8, 0]],
[3, 8, [37, 7, 5, 0, 5, 0, 9, 0]],
[3, 8, [36, 7, 6, 0, 6, 0, 12, 0]],
[3, 8, [36, 7, 5, 0, 5, 0, 9, 0]],
[3, 8, [36, 7, 5, 0, 5, 0, 8, 0]],
[3, 8, [37, 7, 6, 0, 6, 0, 10, 0]],
[3, 8, [37, 7, 6, 0, 6, 0, 10, 0]],
[3, 8, [37, 7, 6, 0, 6, 0, 12, 0]]
]
nch = np.asarray(aa, dtype=object)
print("nch shape {}".format(nch.shape))
print(nch)
nchB = nch[:,2]
print("nchB shape {}".format(nchB.shape))
print(nchB)
print("Test 1")
print( np.frompyfunc(list, 0, 1)(np.empty((3,2), dtype=object)) )
print("Test 2")
print( np.frompyfunc(list, 0, 1)(nchB) )
print("Test 3")
print( np.frompyfunc(list, 1, 1)( nchB ) )
Он выводит:
nch shape (10, 3)
[[3 8 list([37, 7, 5, 0, 5, 0, 8, 0])]
[3 8 list([36, 7, 5, 0, 4, 0, 8, 0])]
[3 8 list([37, 7, 5, 0, 4, 0, 8, 0])]
[3 8 list([37, 7, 5, 0, 5, 0, 9, 0])]
[3 8 list([36, 7, 6, 0, 6, 0, 12, 0])]
[3 8 list([36, 7, 5, 0, 5, 0, 9, 0])]
[3 8 list([36, 7, 5, 0, 5, 0, 8, 0])]
[3 8 list([37, 7, 6, 0, 6, 0, 10, 0])]
[3 8 list([37, 7, 6, 0, 6, 0, 10, 0])]
[3 8 list([37, 7, 6, 0, 6, 0, 12, 0])]]
nchB shape (10,)
[list([37, 7, 5, 0, 5, 0, 8, 0]) list([36, 7, 5, 0, 4, 0, 8, 0])
list([37, 7, 5, 0, 4, 0, 8, 0]) list([37, 7, 5, 0, 5, 0, 9, 0])
list([36, 7, 6, 0, 6, 0, 12, 0]) list([36, 7, 5, 0, 5, 0, 9, 0])
list([36, 7, 5, 0, 5, 0, 8, 0]) list([37, 7, 6, 0, 6, 0, 10, 0])
list([37, 7, 6, 0, 6, 0, 10, 0]) list([37, 7, 6, 0, 6, 0, 12, 0])]
Test 1
[[list([]) list([])]
[list([]) list([])]
[list([]) list([])]]
Test 2
[list([]) list([]) list([]) list([]) list([]) list([]) list([]) list([])
list([]) list([])]
Test 3
[list([]) list([]) list([]) list([]) list([]) list([]) list([]) list([])
list([]) list([])]
По сути, я использую что-то вроде nchB
для подачи блокпоста matplotlib, который отлично работает.
nchB
здесь считается одноразмерным массивом длины 10 с элементами, являющимися списками;здесь так и происходит, каждый из этих списков состоит из 8 элементов.
Теперь я хотел бы создать массив, который также представляет собой одномерный массив длиной 10 с элементами, являющимися списками;за исключением того, что я хотел бы, чтобы каждый список имел только один или два элемента. Поэтому я хотел бы получить, скажем:
[list([37, 7]) list([36, 7])
list([37, 7]) list([37, 7])
list([36, 7]) list([36, 7])
list([36, 7]) list([37, 7])
list([37, 7]) list([37, 7])]
или:
[list([37]) list([36])
list([37]) list([37])
list([36]) list([36])
list([36]) list([37])
list([37]) list([37])]
... каким-то образом из nchB
, предпочтительно с использованием однострочника - тогда я мог бы использоватьэтот «сокращенный» массив списков для подачи данных о полевых боксах maxplotlib для инициализации (так что я могу начать настройку графика, и мне не придется долго ждать, пока мои фактические данные будут отображены).
Как можноЯ делаю это? Очевидно, что тривиальные попытки, которые я предпринял в «Тесте 2» и «Тесте 3» выше с np.frompyfunc
, которые я нашел из:
... не совсем работает, так как все, что я получаю, это пустые списки.