我想知道如何最好地解決腳本中的以下問題:“ValueError:x 和 y 必須具有相同的第一維,但具有形狀 (1531,) 和 (1532,)”。
這里有什么問題?問題是繪圖的 x 和 y 軸不共享完全相同數量的值(輸入)以進行繪圖。結果就是上面的錯誤資訊。
我們先來看代碼:
# Initialize
import numpy as np
import matplotlib.pyplot as plt
from scipy import signal
from matplotlib.pyplot import cm
# Numpy.loadtxt – Loads data from a textfile.
# Scipy.signal.welch – Creation of the power-spectrum via welch method. f, Welch creates the ideal frequencies (f, Welch = Power Spectrum or Power Spectral Density)
Subjects = ["Subject1" "Subject2"]
for Subject in Subjects:
Txt = np.loadtxt("/datadir.../{0}/filename...{0}.txt".format(Subject), comments="#", delimiter=None,
converters=None, skiprows=0, usecols=0, unpack=False, ndmin=0, encoding=None, max_rows=None, like=None)
f, Welch = signal.welch(Txt, fs=1.0, window="hann", nperseg=None, noverlap=None, nfft=3062, detrend="constant", return_onesided=True, scaling="density", axis=-1, average="mean")
BypassZero1 = f[f > 0.00000000000001] # Avoids "RuntimeWarning: divide by zero encountered in log"
BypassZero2 = Welch[Welch > 0.00000000000001]
Log_f = np.log(BypassZero1, out=BypassZero1, where=BypassZero1 > 0)
Log_Welch = np.log(BypassZero2, out=BypassZero2, where=BypassZero2 > 0)
plt.plot(Log_f, Log_Welch)
代碼行“BypassZero1”和“BypassZero2”告訴 Python 只對“f”和“Welch”使用大于 0.00000000000001 的值。否則問題“運行時警告:日志中遇到的除以零”將出現在以下步驟中,我對兩個軸(Log_f 和 Log_Welch)應用對數。
這是代碼的最后 plt.plot 行出現問題的地方。在使用 Welch 方法并應用兩個軸的對數的上一步之后,似乎為“f”和“Welch”“留下”了不同數量的數值。
我想知道是否有可能處理 .txt 檔案中提供的 0.xxx 值。目前,僅使用 f 和 Welch 大于 0.00000000000001 的值。這將導致 x 和 y 的值數量不同,從而導致無法繪制資料。
這個問題的解決方案是什么?
uj5u.com熱心網友回復:
正如您所指出的,錯誤訊息表明您的兩個陣列的長度不同。這是因為第二個陣列的掩碼應該與第一個陣列的掩碼相同。因此,替換BypassZero2 = Welch[Welch > 0.00000000000001]with BypassZero2 = Welch[f > 0.00000000000001]應該可以解決問題。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/371880.html
標籤:Python matplotlib 值错误
上一篇:鍵盤庫阻止了Python執行緒?
