2016-04-02 2 views
2

Мне нужно вырастить python DataFrame по одной строке за раз.эквивалент sapply в python?

В R функция sapply() быстро & эффективный. Например,

sapply(1:100, function(i) rnorm(50)) 

производит матрицу (стандартных нормальных случайных) чисел, которые затем могут быть перенесены и/или преобразованы в кадр данных 50 х 100, при необходимости

Как эффективно делать то же самое в Python ?

+1

Вы не можете просто использовать 'for' цикл? Это в значительной степени то, что 'sapply()' находится под капотом. –

+0

На самом деле, более эффективно выполнять 'matrix (rnorm (5000), nrow = 50)' ... – MichaelChirico

+0

И даже в 'sapply' эффективнее делать' sapply (integer (100), function (i) rnorm (50)) '(что' replicate' делает). Наиболее эффективным я могу видеть: 'структура (rnorm (5000), .Dim = c (50L, 100L))'. – MichaelChirico

ответ

-1

Python может легко выполнить такую ​​вещь через список понимание:

import random as rand 
[[rand.gauss(mu=0, sigma=1) for column in range(50)] for row in range(100)] 

В противном случае, вы можете использовать NumPy пакет делать сложные операции матрицы.

--Andrea

2

Рассмотрим следующую версию списка Понимание:

import numpy as np 
import pandas as pd 

df = pd.DataFrame([np.random.randn(50) for i in range(100)])