LightCurve.bin(time_bin_size=None, time_bin_start=None, time_bin_end=None, n_bins=None, aggregate_func=None, bins=None, binsize=None)[source]

Bins a lightcurve in equally-spaced bins in time.

If the original light curve contains flux uncertainties (flux_err), the binned lightcurve will report the root-mean-square error. If no uncertainties are included, the binned curve will return the standard deviation of the data.

time_bin_sizeQuantity or TimeDelta, optional

The time interval for the binned time series - this is either a scalar value (in which case all time bins will be assumed to have the same duration) or as an array of values (in which case each time bin can have a different duration). If this argument is provided, time_bin_end should not be provided. (Default: 0.5 days; default unit: days.)

time_bin_startTime or iterable, optional

The start time for the binned time series - this can be either given directly as a Time array or as any iterable that initializes the Time class. This can also be a scalar value if time_bin_size is provided. Defaults to the first time in the sampled time series.

time_bin_endTime or iterable, optional

The times of the end of each bin - this can be either given directly as a Time array or as any iterable that initializes the Time class. This can only be given if time_bin_start is an array of values. If time_bin_end is a scalar, time bins are assumed to be contiguous, such that the end of each bin is the start of the next one, and time_bin_end gives the end time for the last bin. If time_bin_end is an array, the time bins do not need to be contiguous. If this argument is provided, time_bin_size should not be provided. This option, like the iterable form of time_bin_start, requires Astropy 5.0.

n_binsint, optional

The number of bins to use. Defaults to the number needed to fit all the original points. Note that this will create this number of bins of length time_bin_size independent of the lightkurve length.

aggregate_funccallable, optional

The function to use for combining points in the same bin. Defaults to np.nanmean.

binsint, iterable or str, optional

If an int, this gives the number of bins to divide the lightkurve into. In contrast to n_bins this adjusts the length of time_bin_size to accommodate the input time series length. If it is an iterable of ints, it specifies the indices of the bin edges. If a string, it must be one of ‘blocks’, ‘knuth’, ‘scott’ or ‘freedman’ defining a method of automatically determining an optimal bin size. See histogram for a description of each method. Note that ‘blocks’ is not a useful method for regularly sampled data.


In Lightkurve v1.x, the default behavior of bin() was to create bins which contained an equal number data points in each bin. This type of binning is discouraged because it usually makes more sense to create equally-sized bins in time duration, which is the new default behavior in Lightkurve v2.x. Nevertheless, this binsize parameter allows users to simulate the old behavior of Lightkurve v1.x. For ease of implementation, setting this parameter is identical to passing time_bin_size = lc.time[binsize] - time[0], which means that the bins are not guaranteed to contain an identical number of data points.


A new light curve which has been binned.