小编Cec*_*lia的帖子

如何在2D numpy数组中找到簇大小?

我的问题如下,

我有一个2D numpy数组填充0和1,具有吸收边界条件(所有外部元素都是0),例如:

[[0 0 0 0 0 0 0 0 0 0]
 [0 0 1 0 0 0 0 0 0 0]
 [0 0 1 0 1 0 0 0 1 0]
 [0 0 0 0 0 0 1 0 1 0]
 [0 0 0 0 0 0 1 0 0 0]
 [0 0 0 0 1 0 1 0 0 0]
 [0 0 0 0 0 1 1 0 0 0]
 [0 0 0 1 0 1 0 …
Run Code Online (Sandbox Code Playgroud)

python arrays numpy cluster-analysis block

10
推荐指数
1
解决办法
5988
查看次数

使用pandas数据帧计算加权平均值

我有以下pandas数据帧:

data_df = pd.DataFrame({'ind':['la','p','la','la','p','g','g','la'],
                        'dist':[10.,5.,7.,8.,7.,2.,5.,3.],
                        'diff':[0.54,3.2,8.6,7.2,2.1,1.,3.5,4.5],
                        'cas':[1.,2.,3.,4.,5.,6.,7.,8.]})  
Run Code Online (Sandbox Code Playgroud)

那是

    cas  diff  dist ind
0    1  0.54    10  la
1    2  3.20     5   p
2    3  8.60     7  la
3    4  7.20     8  la
4    5  2.10     7   p
5    6  1.00     2   g
6    7  3.50     5   g
7    8  4.50     3  la
Run Code Online (Sandbox Code Playgroud)

我需要计算权重在'dist'列中的所有列的加权平均值,并将值分组为'ind'.

例如'ind'='la'和'diff'列:

((10*0.54)+(8.60*7)+(7.20*8)+(4.50*3))/(10+7+8+3) = 4.882143
Run Code Online (Sandbox Code Playgroud)

我想要获得的结果如下

        cas      diff
ind                    
 g    6.714286  2.785714
 la   3.107143  4.882143
 p    3.750000  2.558333
Run Code Online (Sandbox Code Playgroud)

这是通过将每个列的每个值乘以'dist'列中的相应值得到的,将结果与相同的'ind'相加,然后将结果除以与相同ind相对应的所有'dist'值的总和.

我认为这可能是数据帧'groupby'方法完成的一项简单任务,但实际上它有点棘手.

有人可以帮帮我吗?

python weighted-average pandas

9
推荐指数
1
解决办法
5866
查看次数

使用matplotlib imshow在for循环中显示numpy数组

我有一个numpy数组,其元素在for循环中更新:

a = np.array([[1,2,3],[4,5,6],[7,8,9]])

for t in range(0,10):
    imshow(a)

    for i in range(0,a.shape[0]):
        for j in range(0,a.shape[1]):
            a[i][j] += 1
Run Code Online (Sandbox Code Playgroud)

我想在每次迭代时显示数组,但是imshow()不起作用,它只是在循环终止后显示图像.

PS.我正在使用Ipython笔记本

我在网上发现了不同的东西,但没有一个在我的电脑上工作(例如我试图使用matplotlib的动画模块)

奇怪的是,如果我尝试使用标准的python提示执行此示例(http://matplotlib.org/examples/animation/dynamic_image2.html),一切正常,而在Ipython笔记本上它不起作用.谁能解释我为什么?

笔记:

也许我过分简化了我的代码;

我正在研究森林火灾模型,数组是一个填充0 =空站点,1 =树,2 =火的网格.

在每个时间步骤(迭代):

  1. 在随机选择的站点上放置一棵树,如果该站点是空闲的,则种植树
  2. 一棵树以概率f点燃

我想使用色彩图显示数组,以可视化我的模型的演变

python arrays animation numpy matplotlib

4
推荐指数
1
解决办法
7920
查看次数