2013-03-04 2 views
0

Я хотел бы бин мои данные неравномерно.bin ширина в зависимости изготовленный под заказ функция

import numpy as np 
import matplotlib.pyplot as plt 

def fun(x): 
    return >some function of x< 

То, что я хочу сейчас сделать somehing выглядит как:

np.linespace(0.,200.,fun(x)) 

Есть удобный способ использовать функцию Numpy, которая может справиться с этим? Я только что увидел, что np.arange и np.linspace работают с числами и не могут принимать функции в качестве аргументов.

Я могу написать функцию, которая может позаботиться об этом, но собственное решение будет намного лучше.

+0

написать описание функции? Конечно, если вы напишете функцию, вы сделали эту работу? –

ответ

2

Создайте диапазон значений x, определите свою пользовательскую функцию, затем вызовите свою функцию для каждого из элементов массива. Numpy делает это довольно легко:

fun = lambda x: x**2 # Example function 
N = 10 # Number of data points 
x = np.linspace(0., 200., N) # Creates an array of N points 
bins = fun(x) # Applies fun to all values in array x 
+0

+1, но я бы сказал, что вы обычно будете использовать 'bins = np.linspace (0, 200, n) ** 2', без явного объявления функции – Jaime

+0

@Jaime Да, но x ** 2 был просто пример, возможно, у ОП есть более сложная функция - его спросили, как сделать биннинг с помощью функции – Dhara

+0

Да, ваш ответ идеально подходит для заданного вопроса. Мой комментарий был скорее общим замечанием о том, как я его реализую. – Jaime

Смежные вопросы