Python:计算列表列表中的元素数量并提供给矩阵?

标签 python python-3.x for-loop counter python-xarray

给定一个列表列表,其中每个列表的长度

 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] ]

我想计算一个元素的重复次数并将其输入到一个单独的矩阵中。

让我们将每个列表称为框架,并将框架中的元素称为状态

这是我的代码,它工作正常:

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

在我的例子中,列表M28,800个列表,其中每个列表包含75个元素(数字在0到499之间)。

这使得矩阵的大小为 500X 28,800。该代码大约需要 30 分钟才能完成,我相信问题出在 for 循环中。

有没有什么有效的写法可以让代码执行得更快?

最佳答案

我将函数 Vfinal 更改为 Vfinal2

这使得代码更快

def Vfinal2(s_t,Matrix):
        V = np.zeros((s_t,len(Matrix)))
        for i,row in enumerate(Matrix):
            a = np.bincount(row)
            b=np.zeros(s_t)
            b[:len(a)]=a
            V[:,i]=b
    return V    

关于Python:计算列表列表中的元素数量并提供给矩阵?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38207491/

相关文章:

python - 尝试运行 Python 脚本时出现令人困惑的错误

python - 在 python 中使用 sleep 制作一个计时器。如何考虑计算时间?

python - 为什么我的列表在我尝试 append 它们时没有加入 Python

python - Django 原子请求是如何工作的?

python - 在忽略 NaN 的同时采用 np.average?

python - 如何使用 argparse 为参数创建可选值?

c - 简化 C 中的嵌套 for 循环

c++ - For 循环是否总是至少执行一次?

python - 我如何在 python 中执行相当于转换为 int 的操作

python - 如何打印谷歌搜索结果的数量(Beautifulsoup)