python - 如何从产生两个二维数组输出的函数的 1 个输出中选择 1 行数据
问题描述
对于上下文,我有一个输出两个二维数组的二维随机游走函数。这两个数组分别代表 x 位置和 y 位置。这两个数组都是二维的,因为列数表示粒子数(100 列是 100 个粒子),行数表示每个粒子采取的步骤(100 步是 100 行)。
问题:如何仅选择 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]
这从 0 选择 f() 的第一个输出作为 python 索引
要选择我们想要的行和列,我们使用索引(对于 2d 数组)
行/列_we_want= Histo2d[50][:500]
[50] 是第 50 步和 [:500] 的行,其中:表示最多 500 个(即 500 个粒子)的所有列。
无花果 = plt.figure()。
ax1.hist(行/列,箱=20,密度=真)
推荐阅读
- android - Android导航组件弹出过渡问题
- google-oauth - 需要以前的答案无法解决此问题以解决 redirect_uri_mismatch
- shell - 如何隐藏shell命令的信息将打印并保存到变量中?
- sql - 游标不包括结果中的第一个 select 语句
- python - python:读取和保存图像时颜色变化
- mysql - 组织和部门层次结构数据库模式
- java - Java 编程 - 如何从多个客户端同时向服务器发送多个请求
- css - 如何选择与 :hover 相邻的子元素
- node.js - 如何从云功能访问 Firebase 存储中的特定文件夹?
- c# - C# MongoDB 字段映射