У меня есть tuple
, который содержит произвольную длину numpy.array
, а также скаляры. Что-то вроде этого:Сочетание элементов с numpy.array и скалярами
(array([ 31.5, 31.6, 31.7, 31.8, 31.9, 32. , 32.1, 32.2, 32.3,
32.4, 32.5, 32.6, 32.7, 32.8, 32.9, 33. , 33.1, 33.2,
33.3, 33.4, 33.5, 33.6, 33.7, 33.8, 33.9, 34. , 34.1,
34.2, 34.3, 34.4, 34.5, 34.6, 34.7, 34.8, 34.9, 35. ,
35.1, 35.2]), 30.0, 0.0025, 0.0, 0.0027, 0.2791, 1.5, 1.0, 100.0)
Мой результат должен соединить каждый элемент numpy.array
со всеми другими элементами в tuple
. Задача состоит в том, что numpy.array
появляется в произвольном месте внутри кортежа, поэтому я не могу индексировать с гарантией.
Результат должен быть итерацию (предпочтительно tuple
) из numpy.array
с, что-то вроде этого:
(array([31.5, 30.0, 0.0025, 0.0, 0.0027, 0.2791, 1.5, 1.0, 100.0]),
array([31.6, 30.0, 0.0025, 0.0, 0.0027, 0.2791, 1.5, 1.0, 100.0]),
array([31.7, 30.0, 0.0025, 0.0, 0.0027, 0.2791, 1.5, 1.0, 100.0]),
array([31.8, 30.0, 0.0025, 0.0, 0.0027, 0.2791, 1.5, 1.0, 100.0]),
...
)
я попытался решения, представленные here и here, а также itertools.product
. Решения SE предполагают наличие двух независимых массивов, и itertools.product
не является правильным решением.
Вы можете использовать itertools продукт таким образом: 'list (itertools.product ([1,2,3], [[4, 5]]))' => '[(1, [4, 5]), (2, [4, 5]), (3, [4, 5])], который более или менее то, что вы хотите. Важная часть - сделать второй список (array/tuple) одним списком элементов (array/tuple) – Pyetras
Если бы я мог определить местоположение np.array, да, но он возвращается в произвольных местах, чтобы я не мог его индексировать но в остальном, да, это сработает. –
, чтобы разбить кортеж на два, вы можете использовать что-то вроде '[x for x in s if type (x) == np.ndarray] [0]' и '[x для x в s, если type (x)! = Np .ndarray] ', где' s' является исходным кортежем. – matiasg