2013-03-04 67 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.arangenp.linspace使用數字,不能將函數作爲參數。

我可以編寫一個可以處理它的函數,但本機解決方案會更好。

+0

寫一個函數?當然如果你寫這個功能,你已經完成了這項工作? – 2013-03-04 08:41:14

回答

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 2013-03-04 14:29:02

+0

@Jaime是的,但x ** 2只是一個例子,也許OP有一個更復雜的功能 - 它被問及如何使用功能做分檔 – Dhara 2013-03-04 14:35:54

+0

是的,你的答案是完美的問題。我的評論更多地是關於如何實施它的一般性評論。 – Jaime 2013-03-04 14:51:33