NumPy lub SciPy, aby obliczyć medianę ważoną

Próbuję zautomatyzować proces, który wykonuje JMP (Analyze-> Dystrybucja, wprowadzając kolumnę A jako „wartość Y”, używając kolejnych kolumn jako wartości „wagi”). W JMP musisz robić jedną kolumnę na raz - chciałbym użyć Pythona do przechodzenia przez wszystkie kolumny i tworzenia tablicy pokazującej, powiedzmy, medianę każdej kolumny.

Na przykład, jeśli macierz masowa to [0, 10, 20, 30], a tablica wagowa dla kolumny 1 to [30, 191, 9, 0], ważona mediana tablicy mas powinna wynosić 10. Jednak I nie jestem pewien, jak dojść do tej odpowiedzi.

Do tej pory

zaimportował csv pokazujący wagi jako tablicę, maskując wartości 0 iutworzyli tablicę „wartości Y” o tym samym kształcie i rozmiarze co tablica wag (113x32). Nie jestem do końca pewien, czy muszę to zrobić, ale pomyślałem, że będzie to łatwiejsze niż pętla for dla ważenia.

Nie jestem pewien, dokąd stąd się udać. Zasadniczo „wartość Y” jest zakresem mas, a wszystkie kolumny w tablicy reprezentują liczbę punktów danych znalezionych dla każdej masy. Muszę znaleźć średnią masę, w oparciu o częstotliwość, z jaką zostały zgłoszone.

Nie jestem ekspertem w Pythonie ani statystykach, więc jeśli pominęłem jakieś szczegóły, które mogłyby być przydatne, daj mi znać!

Aktualizacja: oto kod do tej pory:

#Boilerplate & Import files
import csv
import scipy as sp
from scipy import stats
from scipy.stats import norm
import numpy as np
from numpy import genfromtxt
import pandas as pd
import matplotlib.pyplot as plt

inputFile = '/Users/cl/prov.csv'
origArray = genfromtxt(inputFile, delimiter = ",")
nArray = np.array(origArray)
dimensions = nArray.shape
shape = np.asarray(dimensions)

#Mask values ==0
maTest = np.ma.masked_equal(nArray,0)

#Create array of masses the same shape as the weights (nArray)
fieldLength = shape[0]
rowLength = shape[1]

for i in range (rowLength):
    createArr = np.arange(0, fieldLength*10, 10)
    nCreateArr = np.array(createArr)
    massArr.append(nCreateArr)
    nCreateArr = np.array(massArr)
nmassArr = nCreateArr.transpose()

questionAnswers(2)

yourAnswerToTheQuestion