NumPy или SciPy для расчета взвешенной медианы

Я пытаюсь автоматизировать процесс, который выполняет JMP (Analyze-> Distribution, ввод столбца A в качестве «значения Y», использование последующих столбцов в качестве значения «weight»). В JMP вы должны делать это по одному столбцу за раз - я хотел бы использовать Python для циклического перебора всех столбцов и создания массива, показывающего, скажем, медиану каждого столбца.

Например, если массив масс [0, 10, 20, 30], а массив масс для столбца 1 - [30, 191, 9, 0], взвешенная медиана массива должна быть 10. Однако я Я не уверен, как прийти к этому ответу.

До сих пор я

импортировал CSV, показывающий веса в виде массива, маскирующие значения 0 исоздал массив значений «Y» той же формы и размера, что и массив весов (113x32). Я не совсем уверен, что мне нужно это сделать, но подумал, что это будет проще, чем цикл for для взвешивания.

Я не уверен, куда именно идти. По сути, «значение Y» представляет собой диапазон масс, и все столбцы в массиве представляют количество точек данных, найденных для каждой массы. Мне нужно найти среднюю массу, основываясь на частоте, с которой они были зарегистрированы.

Я не эксперт по Python или статистике, поэтому, если я опущу какие-либо подробности, которые будут полезны, дайте мне знать!

Обновление: вот код для того, что я сделал до сих пор:

#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()

Ответы на вопрос(2)

Ваш ответ на вопрос