Здесь x вместо np.linspace используйте массив точек данных (1D). Ваш 2D будет состоять из (x, freq)
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, 5, 100)
y = np.sin(2 * np.pi * x)
## fourier transform
f = np.fft.fft(y)
## sample frequencies
freq = np.fft.fftfreq(len(y))
plt.plot(freq, abs(f) ** 2)
plt.show()
print( "Shape of singal array : {}".format(x.shape))
print( "Shape of frequency array : {}".format(freq.shape))
new_2D_array = np.vstack((x, freq)).T
print(new_2D_array)