我如何 select 来自产生两个二维数组输出的函数的 1 个输出的 1 行数据

how do I select 1 row of data from 1 output of a function that produces two 2d array outputs

对于上下文,我有一个 2D Random walker 函数,它输出两个 2d 数组。这两个数组表示 x 位置和 y 位置。 这两个数组都是二维的,因为列数代表粒子数(100 列是 100 个粒子),行数代表每个粒子采取的步骤(100 步是 100 行)。

问题:我如何 select 仅使用 x 位置 2d 数组来绘制第 50 行(50 步)和第 50 行的所有列 (500),以便在直方图上绘制?

以下是我的尝试。其中 particle_motion_2D(500,50,20) 是函数。 500 是粒子数,50 步,20 框宽度(这对问题不重要)

import matplotlib
import matplotlib.pyplot as plt
import numpy as np
import random as rd
import math as m


def particle_motion_2D(P_xy,Steps,bwidth):
    X_Steps=[0,-1,1]
    Y_Steps=[0,-1,1]
    P_x= np.zeros(P_xy) 
    P_y= np.zeros(P_xy)
    States_Px=np.array([P_x])
    States_Py=np.array([P_y])
    
   
    for a in range(Steps):
        Box_Max_x=np.where(P_x >= bwidth/2)
        Box_Min_x=np.where(P_x <= -bwidth/2)
        Box_Max_y=np.where(P_y >= bwidth/2)
        Box_Min_y=np.where(P_y <= -bwidth/2)
        
        P_Mnt_x=np.array([rd.choice(X_Steps) for i in P_x])
        P_Mnt_y=np.array([rd.choice(Y_Steps) for i in P_y])
        
        P_Mnt_x[Box_Max_x]=-1
        P_Mnt_x[Box_Min_x]=+1
        P_Mnt_y[Box_Max_y]=-1
        P_Mnt_y[Box_Min_y]=+1
        
        P_x= P_x + P_Mnt_x
        P_y= P_y + P_Mnt_y
        
        States_Px = np.append(States_Px,[P_x],axis=0)
        States_Py = np.append(States_Py,[P_y],axis=0)
        
    
    return States_Px, States_Py


Particle_RdWalk2D=particle_motion_2D(500,50,20) 

Histo2d=Particle_RdWalk2D[50][0] 
fig = plt.figure()#Plotting. 
ax1.hist(Histo2d,bins=20,density=True)

我认为这是一个解决方案:

Particle_RdWalk2D=particle_motion_2D(500,50,20)

Histo2d=Particle_RdWalk2D[0]

这 select 是 f() 的第一个输出,因为 python 从 0

开始索引

为了select我们想要的行和列我们使用索引(对于二维数组)

Rows/columns_we_want= Histo2d[50][:500]

[50] 是第 50 步的行 & [:500] 其中:表示所有列最多 500(即 500 个粒子)。

无花果 = plt.figure().

ax1.hist(Rows/columns,bins=20,density=True)