Как выбрать 1 строку данных из 1 вывода функции, которая создает два вывода 2d-массива

Для контекста у меня есть функция 2D Random walker, которая выводит два 2D-массива. Два массива представляют позицию x и позицию y. Оба этих массива являются двумерными, потому что количество столбцов представляет количество частиц (100 столбцов — это 100 частиц), а количество строк — количество шагов, предпринятых каждой частицей (100 шагов — это 100 строк).

Вопрос: как выбрать только массив x position 2d для построения 50-й строки (50 шагов) и всех столбцов (500) для этой 50-й строки, чтобы построить гистограмму?

Ниже попытка, которую я сделал. Где частица_движения_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)

Лол в np.cumsum, скорее всего. Я не знаю, что вы на самом деле спрашиваете.

Mad Physicist 22.12.2020 17:58

Полностью перефразировал сообщение и ответ

Hondros 22.12.2020 18:45

Пожалуйста, опубликуйте актуальную MCVE

Mad Physicist 22.12.2020 18:48

опубликовал MCVE, чтобы другие могли его запустить

Hondros 22.12.2020 19:55
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
4
56
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я думаю, что это решение:

Particle_RdWalk2D=particle_motion_2D(500,50,20)

Histo2d=Particle_RdWalk2D[0]

Это выбирает 1-й вывод f() как индексы python от 0

Чтобы выбрать нужные строки и столбцы, мы используем индексирование (для массива 2d).

Строки/столбцы_we_want= Histo2d[50][:500]

[50] — это строка с шагом 50 и [:500], где : означает все столбцы до 500 (т. е. 500 частиц).

рис = plt.figure().

ax1.hist (строки/столбцы, ячейки = 20, плотность = истина)

Другие вопросы по теме