结果不一致-Jupyter Numpy和Transpose

时间:2019-03-21 20:39:40

标签: arrays numpy jupyter transpose

enter image description here

我在使用Jupyter / Numpy / Tranpose()/ 1D数组时表现出奇怪的行为。

我发现了另一篇文章,其中transpose()不会转置一维数组,但是在以前的Jupyter笔记本中,确实如此。

我有一个不一致的示例,但我不明白:

如果2个或多或少相同的阵列具有2个不同的输出,请查看我的jupyter笔记本所附的图片。

似乎对和不对1D数组进行转置。不一致很糟糕

输出是(1000,)和(1,1000),为什么会发生这种情况?

# GENERATE WAVEORM:
#---------------------------------------------------------------------------------------------------
N   = 1000
fxc = []
fxn = []
for t in range(0,N):
    fxc.append(A1*m.sin(2.0*pi*50.0*dt*t) + A2*m.sin(2.0*pi*120.0*dt*t))
    fxn.append(A1*m.sin(2.0*pi*50.0*dt*t) + A2*m.sin(2.0*pi*120.0*dt*t) + 5*np.random.normal(u,std,size=1))
#---------------------------------------------------------------------------------------------------


# TAKE TRANSPOSE:
#---------------------------------
fc = np.transpose(np.array(fxc))
fn = np.transpose(np.array(fxn))
#---------------------------------


# PRINT DIMENSION:
#---------------------------------
print(fc.shape)
print(fn.shape)
#---------------------------------   

1 个答案:

答案 0 :(得分:1)

从通话中将size=1移至numpy.random.normal。然后它将返回一个 scalar ,而不是长度为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是一维数组的列表(例如,类似[[0.123], [-.4123], [0.9455], ...]的东西。当NumPy将其转换为数组时) ,它的形状为(N, 1)。转置这样的数组会导致形状为(1, N)

另一方面,

fxc是标量列表(例如,类似[0.123, 0.456, ...]的列表)。转换为NumPy数组时,它将是形状为(N,)的一维数组。 NumPy的转置操作会交换尺寸,但不会创建新尺寸,因此转置一维数组不会执行任何操作。