Удалить size=1
из вашего звонка на numpy.random.normal
.Затем он вернет скаляр вместо 1-го массива длиной 1.
Например,
In [2]: np.random.normal(0, 3, size=1)
Out[2]: array([0.47058288])
In [3]: np.random.normal(0, 3)
Out[3]: 4.350733438283539
Использование size=1
в вашем коде являетсяпроблема, потому что это приводит к тому, что fxn
представляет собой список 1-d массивов (например, что-то вроде [[0.123], [-.4123], [0.9455], ...]
. Когда NumPy преобразует это в массив, он имеет форму (N, 1)
. Транспонирование такого массива приводит к форме (1, N)
.
fxc
, с другой стороны, представляет собой список скаляров (например, что-то вроде [0.123, 0.456, ...]
). При преобразовании в массив NumPy это будет 1-й массив с формой (N,)
. Операция транспонирования NumPy меняет размеры, но не создает новые измерения, поэтому транспонирование 1-го массива ничего не делает.