def _broadcast_arguments(args, shape): """If there are no arrays/sequences in the args tuple, return args and shape unchanged. Otherwise: if shape is empty, broadcast all arrays/sequences in the arguments to a common shape, and return the result together with the broadcasted shape. If shape is not empty, broadcast all arrays/sequences in the arguments to the given shape and return these together with the unchanged shape. Scalar arguments are never changed. """ if isinstance(shape, _types.IntType): shape = [shape] array_args = [] for arg in args: if (isinstance(arg, num.ArrayType) or isinstance(arg, _types.ListType) or isinstance(arg, _types.TupleType)): array_args.append(num.array(arg)) if len(array_args) > 0: if len(shape) == 0: array_args = _gen._nWayBroadcast(array_args) shape = array_args[0].shape else: for ii in range(len(array_args)): array_args[ii] = _gen._broadcast(num.array(array_args[ii]), shape) new_args = [] for arg in args: if (isinstance(arg, num.ArrayType) or isinstance(arg, _types.ListType) or isinstance(arg, _types.TupleType)): new_args.append(array_args.pop(0)) else: new_args.append(arg) args = tuple(new_args) return args, shape
def sum(input, labels=None, index=None): """Calculate the sum of the values of the array. The index parameter is a single label number or a sequence of label numbers of the objects to be measured. If index is None, all values are used where labels is larger than zero. """ input = numarray.asarray(input) if isinstance(input.type(), numarray.ComplexType): raise TypeError, 'Complex type not supported' if labels != None: labels = numarray.asarray(labels) labels = _broadcast(labels, input.shape) if labels.shape != input.shape: raise RuntimeError, 'input and labels shape are not equal' return _nd_image.statistics(input, labels, index, 0)
def sum(input, labels = None, index = None): """Calculate the sum of the values of the array. The index parameter is a single label number or a sequence of label numbers of the objects to be measured. If index is None, all values are used where labels is larger than zero. """ input = numarray.asarray(input) if isinstance(input.type(), numarray.ComplexType): raise TypeError, 'Complex type not supported' if labels != None: labels = numarray.asarray(labels) labels = _broadcast(labels, input.shape) if labels.shape != input.shape: raise RuntimeError, 'input and labels shape are not equal' return _nd_image.statistics(input, labels, index, 0)
def maximum_position(input, labels=None, index=None): """Find the position of the maximum of the values of the array. The index parameter is a single label number or a sequence of label numbers of the objects to be measured. If index is None, all values are used where labels is larger than zero. """ input = numarray.asarray(input) if isinstance(input.type(), numarray.ComplexType): raise TypeError, 'Complex type not supported' if labels != None: labels = numarray.asarray(labels) labels = _broadcast(labels, input.shape) if labels.shape != input.shape: raise RuntimeError, 'input and labels shape are not equal' pos = _nd_image.statistics(input, labels, index, 6) if (isinstance(pos, types.ListType)): return [_index_to_position(x, input.shape) for x in pos] else: return _index_to_position(pos, input.shape)
def maximum_position(input, labels = None, index = None): """Find the position of the maximum of the values of the array. The index parameter is a single label number or a sequence of label numbers of the objects to be measured. If index is None, all values are used where labels is larger than zero. """ input = numarray.asarray(input) if isinstance(input.type(), numarray.ComplexType): raise TypeError, 'Complex type not supported' if labels != None: labels = numarray.asarray(labels) labels = _broadcast(labels, input.shape) if labels.shape != input.shape: raise RuntimeError, 'input and labels shape are not equal' pos = _nd_image.statistics(input, labels, index, 6) if (isinstance(pos, types.ListType)): return [_index_to_position(x, input.shape) for x in pos] else: return _index_to_position(pos, input.shape)
def histogram(input, min, max, bins, labels=None, index=None): """Calculate a histogram of of the array. The histogram is defined by its minimum and maximum value and the number of bins. The index parameter is a single label number or a sequence of label numbers of the objects to be measured. If index is None, all values are used where labels is larger than zero. """ input = numarray.asarray(input) if isinstance(input.type(), numarray.ComplexType): raise TypeError, 'Complex type not supported' if labels != None: labels = numarray.asarray(labels) labels = _broadcast(labels, input.shape) if labels.shape != input.shape: raise RuntimeError, 'input and labels shape are not equal' if bins < 1: raise RuntimeError, 'number of bins must be >= 1' if min >= max: raise RuntimeError, 'min must be < max' return _nd_image.histogram(input, min, max, bins, labels, index)
def histogram(input, min, max, bins, labels = None, index = None): """Calculate a histogram of of the array. The histogram is defined by its minimum and maximum value and the number of bins. The index parameter is a single label number or a sequence of label numbers of the objects to be measured. If index is None, all values are used where labels is larger than zero. """ input = numarray.asarray(input) if isinstance(input.type(), numarray.ComplexType): raise TypeError, 'Complex type not supported' if labels != None: labels = numarray.asarray(labels) labels = _broadcast(labels, input.shape) if labels.shape != input.shape: raise RuntimeError, 'input and labels shape are not equal' if bins < 1: raise RuntimeError, 'number of bins must be >= 1' if min >= max: raise RuntimeError, 'min must be < max' return _nd_image.histogram(input, min, max, bins, labels, index)
def extrema(input, labels=None, index=None): """Calculate the minimum, the maximum and their positions of the values of the array. The index parameter is a single label number or a sequence of label numbers of the objects to be measured. If index is None, all values are used where labels is larger than zero. """ input = numarray.asarray(input) if isinstance(input.type(), numarray.ComplexType): raise TypeError, 'Complex type not supported' if labels != None: labels = numarray.asarray(labels) labels = _broadcast(labels, input.shape) if labels.shape != input.shape: raise RuntimeError, 'input and labels shape are not equal' min, max, minp, maxp = _nd_image.statistics(input, labels, index, 7) if (isinstance(minp, types.ListType)): minp = [_index_to_position(x, input.shape) for x in minp] maxp = [_index_to_position(x, input.shape) for x in maxp] else: minp = _index_to_position(minp, input.shape) maxp = _index_to_position(maxp, input.shape) return min, max, minp, maxp
def extrema(input, labels = None, index = None): """Calculate the minimum, the maximum and their positions of the values of the array. The index parameter is a single label number or a sequence of label numbers of the objects to be measured. If index is None, all values are used where labels is larger than zero. """ input = numarray.asarray(input) if isinstance(input.type(), numarray.ComplexType): raise TypeError, 'Complex type not supported' if labels != None: labels = numarray.asarray(labels) labels = _broadcast(labels, input.shape) if labels.shape != input.shape: raise RuntimeError, 'input and labels shape are not equal' min, max, minp, maxp = _nd_image.statistics(input, labels, index, 7) if (isinstance(minp, types.ListType)): minp = [_index_to_position(x, input.shape) for x in minp] maxp = [_index_to_position(x, input.shape) for x in maxp] else: minp = _index_to_position(minp, input.shape) maxp = _index_to_position(maxp, input.shape) return min, max, minp, maxp