我有以下問題。我在課堂上保存了大量的數據。這些數據大部分都是時間依賴的,在最複雜的情況下,變量是三維數組。因爲列表非常靈活(不需要顯式聲明),我想用它們來封裝我的N維數組,因此使用列表來保持時間依賴信息。提取Python中列表中的N維數組的元素
這裏什麼我對元件T = 0的典型例子,T = 2和t我的列表= 3它是歷史類中(float64的簡單矩陣):
history.params[0]
array([[ 1. , 2. , 1. ],
[ 1. , 2. , 1. ],
[ 0.04877093, 0.53176887, 0.26210472],
[ 2.76110434, 1.3569246 , 3.118208 ]])
history.params[2]
array([[ 1.00000825, 1.99998362, 1.00012835],
[ 0.62113657, 0.47057772, 5.23074169],
[ 0.04877193, 0.53076887, 0.26210472],
[ 0.02762192, 4.99387138, 2.6654337 ]])
history.params[3]
array([[ 1.00005473, 1.99923187, 1.00008009],
[ 0.62713657, 0.47157772, 5.23074169],
[ 0.04677193, 0.53476887, 0.25210472],
[ 0.02462192, 4.89387138, 2.6654337 ]])
現在,我該如何讀取/提取矩陣中給定座標(x,y)處的所有元素,以獲得所有時間索引t?
我試着這樣做:
history.params[:][0][0]
,我得到
array([ 1., 2., 1.])
其實無論結腸的地方,我總是得到相同的值,對應於我的矩陣的第一行:
"history.params[0][:][0]" returns "array([ 1., 2., 1.])" in the shell
"history.params[0][0][:]" returns "array([ 1., 2., 1.])"
爲什麼Python不能在這裏區分矩陣元素從t他列表中的元素?什麼是最好的解決方案?
當然,我可以編寫一些循環並創建一個新的變量來重新組織我的數據,但這有點浪費能量。我確信它存在一個優雅的解決方案。 PS:我要在某些時候'Cythonize'我的代碼,所以如果你有一個優化的用於存儲這些變量的Cython的解決方案,我很高興聽到它。
謝謝你的建議。我保留了時間依賴列表,因爲它更容易實現:我不需要指定時間變量的初始大小。受到你的評論的啓發,我選擇了一個顯式聲明的N維的數組(使用np.zeros()),其大小足夠大。索引不是問題,但變量可能需要比需要更多的空間...現在內存很便宜。 – tomahna