Если я правильно интерпретирую вопрос, у вас есть одномерный массив, и вы хотите отобразить его в виде изображения, но вы не знаете априори какой он должен быть.
Эта функция находит «самую квадратную» форму (т. Е. Два ближайших по значению фактора) числа.
import numpy as np
def closest_factor_pair(x: int) -> tuple:
"""
Tries to find the pair of factors of x, i.e. the
closest integers to the square root of x.
Example
>>> closest_factor_pair(34191)
(131, 261)
"""
for i in range(int(np.sqrt(x)), 0, -1):
if x % i == 0:
return i, int(x/i)
return None
Мы можем использовать его, чтобы угадать размер вашего массива и отобразить его:
>>> size = 34191
>>> shape = closest_factor_pair(size)
(131, 261)
Если у вас есть массив, вы можете изменить его форму и отобразить:
import matplotlib.pyplot as plt
arr = np.random.random(size)
plt.matshow(arr.reshape(shape))
, что дает: