Создание 2D-списков в python с индексированными векторами переменной длины

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

for i in range(0,10): for j in range(0,10): number_length = round(random.random()*10) a = np.zeros(number_length) Z[i][j] = a 

Я хочу создать какой-то 2D-список или np.array (не совсем уверен), где я по существу индексирую термин для каждого пикселя в изображении и имею вектор / список значений для каждого отдельного пикселя, который я могу кроме того, длина каждого вектора для каждого индексированного пикселя отличается друг от друга. Каков наилучший способ сделать это?

В моем коде MATLAB обходной путь прост: я определяю двумерную ячейку и просто назначаю любой вектор любому элементу в двумерной ячейке. Поскольку клетки не жалуются на когерентную длину каждого проиндексированного вектора, это хорошо. Каково эквивалентное оптимальное решение для обработки этого в python?

В идеале это решение не должно предполагать максимальную длину «a» для любого пикселя и сделать все индексированные векторы одинаковой длины (так как это означает, что я должен выполнить нулевое заполнение, которое будет потреблять память, если индексированные векторы являются большими размерными и эти большие размерные векторы разрежены по изображению).

One Solution collect form web for “Создание 2D-списков в python с индексированными векторами переменной длины”

Массив NumPy не будет работать, поскольку он требует фиксированных размеров. Вы можете использовать список 2d (т. Е. Список списков), где каждый элемент может быть массивом произвольной длины. Это аналогично вашей настройке в Matlab, используя 2d-ячейки массива векторов.

Попробуй это:

 z = [[np.zeros(np.random.randint(10)+1) for j in range(10)] for i in range(10)] 

Это создает список 10×10, где z [i] [j] – массив нулей NumPy со случайной длиной (от 1 до 10).

Изменить (вложенные циклы, запрошенные в комментарии):

 z = [[None for j in range(10)] for i in range(10)] for i in range(len(z)): for j in range(len(z[i])): z[i][j] = np.zeros(np.random.randint(10)+1) 
  • numpy.void type - как его использовать?
  • Чтение всех переменных в файле .mat с помощью python h5py
  • Загрузка Numy csv TOO медленнее по сравнению с Matlab
  • Функция find () в стиле MATLAB в Python
  • Как получить доступ к элементам numpy ndarray?
  • Алгоритм оптимизации (область доверия собаки-ноги) в Matlab и Python
  • Аффинное преобразование Python / PIL
  • Что такое «fread» от Matlab в Python?
  • Как преобразовать тональную дорожку из алгоритма извлечения мелодии в гудящий звуковой сигнал
  • Что такое эквивалент Matlab 'fscanf' в Python?
  • scipy.linalg.eig возвращают комплексные собственные значения для ковариационной матрицы?
  • Python - лучший язык программирования в мире.