Подтвердить что ты не робот

Преобразование 1D-массива в матрицу numpy

У меня есть простой одномерный массив Python со случайными числами. То, что я хочу сделать, это преобразовать его в матрицу с нулевым значением определенной формы. Моя текущая попытка выглядит следующим образом:

randomWeights = []
for i in range(80):
    randomWeights.append(random.uniform(-1, 1))
W = np.mat(randomWeights)
W.reshape(8,10)

К сожалению, он всегда создает матрицу формы:

[[random1, random2, random3,...]]

Таким образом, используется только первый элемент одного измерения, и команда reshape не имеет никакого эффекта. Есть ли способ преобразования массива 1D в матрицу, так что первые элементы x будут 1-й строкой матрицы, а следующие x - строки 2 и т.д.?

В основном это будет предполагаемая форма:

[[1, 2, 3, 4, 5, 6, 7, 8],
 [9, 10, 11, ... ,    16],
 [...,               800]]

Я полагаю, что я всегда могу создать новую матрицу в желаемой форме вручную, проанализировав входной массив. Но я хотел бы знать, есть ли более простое, более сложное решение eleganz со встроенными функциями, которые я не вижу. Если мне нужно собрать эти матрицы вручную, у меня будет много работы в других областях кода, так как все мои исходные данные поступают в простые массивы 1D, но будут вычисляться как матрицы.

4b9b3361

Ответ 1

reshape() не изменяется на месте, вам нужно назначить результат:

>>> W = W.reshape(8,10)
>>> W.shape
(8,10)    

Ответ 2

Вы можете использовать W.resize(), ndarray.resize()