簡體   English   中英

我的 Numpy 陣列應該是什么尺寸? 窺探痕跡

[英]What dimensions should my Numpy Array be ? Obspy Traces

我目前有 175x 事件的地震數據,每個事件有 3 條軌跡(軌跡是 numpy arrays 地震數據)。 對於這 175 個樣本中的每一個,我都有關於地震數據是否為地震的分類標簽。 我希望將我的數據格式化為 numpy arrays 以進行建模。 我嘗試將 dataframe 放入 numpy arrays 中,每列都是不同的軌跡。 所以列將是“跟蹤一”“跟蹤二”“跟蹤三”。 這沒有用。 我嘗試了許多不同的方法來安排數據以與 keras 一起使用。 我現在正在尋找為 go 的數據創建一個 numpy 矩陣,然后用於建模。 我曾認為形狀可能是(175,3,7501)(#number of events, #number of traces,#number of samples in trace) ,但是我然后迭代並嘗試將三個跟蹤添加到 numpy矩陣並失敗了。 我習慣於使用數據幀而不是 numpy 來輸入 Keras。

newrow = np.array([[trace_copy_1],[trace_copy_2],[trace_copy_3]])
data = numpy.vstack([data, newrow])

data形狀為(175,3,7510) newrow形狀是(3,1,7510)並且不允許我將newrow添加到data

我接收數據的形式是 obspy 流,每個 stream 都有 3 個跟蹤對象。 With each trace object, it holds the trace data in numpy arrays and so I'm having to access and append those to a dataframe for modelling as obviously I can't feed a stream or trace object to keras model.

如果我正確理解您的數據,您可以嘗試以下方法之一:

  • 如果您的data形狀是(175, 3, 7510)定義newrow如下newrow = np.array([trace_copy_1,trace_copy_2,trace_copy_3])trace_copy_x是一個 numpy 數組與形狀7510
  • 使用重塑 function (與numpy.reshape(new_row, (3, 7510))new_row.reshape((3, 7510))
  • 如果您熟悉數據幀,您仍然可以通過減少數據的維度來使用 pandas 數據幀(例如,您可以在同一行的末尾添加不同的軌跡,這是您在處理圖像時經常看到的)。 這里可能類似於pandas.DataFrame(data.reshape((175, 3*7510)))

除此之外,我建議使用numpy.concatenate而不是numpy.vstack (更通用)。

我希望它會起作用。

干杯

感謝您的回答。 我解決這個問題的方法是創建了所需的適合形狀的 NumPy 數組。 (索引或事件數,跟蹤數(或數組數),然后是樣本量(或每個數組中的值的量)

然后我創建了一個新行。 然后我重新塑造並添加。 在此之后,我在開始添加新數據之前拆分數據以刪除原始數據。

data = np.zeros(shape=(175,3,7501))
newrow = [[trace_copy_1],[trace_copy_2],[trace_copy_3]]
newrow = np.array([[trace_copy_1],[trace_copy_2],[trace_copy_3]])
newrow = newrow.reshape((1,3,7501))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM