1
給定列表的列表,其中每個列表與長度Python:從列表列表中選擇元素數量並向Matrix提供數據?
M = [[1,2,3,4,4,5,1,2,9,0], [3,2,1,0,5,6,2,4,6,7], [4,5,5,2,1,2,3,4,2,4], [7,5,6,2,6,7,8,8,8,1] ]
我要計數的元件的重複的數量,並將其饋送到一個單獨的基質。
我們稱每個列表爲frame
,框架中的元素爲states
。
這裏是我的代碼,它工作正常:
import numpy as np
from collections import Counter
import numpy as np
from xarray import DataArray
def Vfinal(s_t,Matrix):
state_no = np.arange(0,s_t)
frame_no = np.arange(0,len(Matrix))
V= DataArray(np.zeros((len(state_no),len(Matrix))), coords=[('States_count', state_no), ('Frame',frame_no)])
for i,j in enumerate(Matrix):
for k in j:
print(k,i)
V.loc[k,i] +=1
return V
In [172]: V = Vfinal(10,M)
In [173]: V
Out[173]:
<xarray.DataArray (States_count: 10, Frame: 4)>
array([[ 1., 1., 0., 0.],
[ 2., 1., 1., 1.],
[ 2., 2., 3., 1.],
[ 1., 1., 1., 0.],
[ 2., 1., 3., 0.],
[ 1., 1., 2., 1.],
[ 0., 2., 0., 2.],
[ 0., 1., 0., 2.],
[ 0., 0., 0., 3.],
[ 1., 0., 0., 0.]])
Coordinates:
* States_count (States_count) int64 0 1 2 3 4 5 6 7 8 9
* Frame (Frame) int64 0 1 2 3
在我的案例列表M
有28,800 lists
,其中每個列表包含75個元素(編號499 0之間)。
這使矩陣的大小爲500X 28,800。代碼需要30分鐘(約)完成,我相信問題在於for
循環。
是否有任何有效的方式來編寫代碼,以便更快地執行代碼?
可否請您從循環又一次它刪除'打印(K,I)'。編寫每個迭代通常需要很多時間 –
是的,我刪除了,甚至需要更多時間。 – Rangooski
沒有'print'就慢一點?!?這是沒有意義的。無論如何,我認爲你的問題可能是http://stackoverflow.com/questions/21394626/how-to-bin-a-matrix的副本,請檢查是否有幫助你的答案 –