我有一些代碼在輸入數據的矩陣上執行各種處理功能。輸入數據可能是2,3或4D。Numpy矩陣 - 如何處理任意大小
我需要從輸入數據中去除n-1維矩陣以進行處理,然後另一個矩陣接收到這個處理後的數據。爲了處理不同大小的輸入數據,最好的辦法是什麼?
例如,此刻,我有以下形式的代碼:
import numpy as np
if number_dims == 2:
output_matrix = np.zeros([size_dim1,final_size_dim2])
for i in range(0,dim1,1):
data_to_process = input_data[i,:]
output_matrix[i,:] = processing_funcs(data_to_process)
if number_dims == 3:
output_matrix = np.zeros([size_dim1,final_size_dim2,final_size_dim3])
for i in range(0,dim1,1):
data_to_process = input_data[i,:,:]
output_matrix[i,:,:] = processing_funcs(data_to_process)
if number_dims == 4:
output_matrix = np.zeros([size_dim1,final_size_dim2,final_size_dim3,final_size_dim4])
for i in range(0,dim1,1):
data_to_process = input_data[i,:,:,:]
output_matrix[i,:,:,:] = processing_funcs(data_to_process)
是否有蟒蛇做一個很好的方式,而不重複的if語句?複雜之處,在n-1個間接尺寸的最終數據大小是不一樣的輸入大小,所以我不能例如,只是做:
output_matrix = np.zeros([np.shape(input_data)])
這也將是不錯的,如果有無論有多少其他維度,都可以沿維度1切片。
'final_size_dim2'等是已知的,但是,例如,一個2D將不具有用於'final_size_dim3','final_size_dim4'值 - 這些可能被設置爲'None'或'[]' - 但例如,'np.zeros([final_size_dim2,None,None])'是不允許的,因此使用上面的'if'語句。 – 218