MCPcopy Index your code
hub / github.com/numpy/numpy / _vectorize_call_with_signature

Method _vectorize_call_with_signature

numpy/lib/_function_base_impl.py:2619–2679  ·  view source on GitHub ↗

Vectorized call over positional arguments with a signature.

(self, func, args)

Source from the content-addressed store, hash-verified

2617 return res
2618
2619 def _vectorize_call_with_signature(self, func, args):
2620 """Vectorized call over positional arguments with a signature."""
2621 input_core_dims, output_core_dims = self._in_and_out_core_dims
2622
2623 if len(args) != len(input_core_dims):
2624 raise TypeError(
2625 'wrong number of positional arguments: '
2626 f'expected {len(input_core_dims)!r}, got {len(args)!r}'
2627 )
2628 args = tuple(asanyarray(arg) for arg in args)
2629
2630 broadcast_shape, dim_sizes = _parse_input_dimensions(
2631 args, input_core_dims)
2632 input_shapes = _calculate_shapes(broadcast_shape, dim_sizes,
2633 input_core_dims)
2634 args = [np.broadcast_to(arg, shape, subok=True)
2635 for arg, shape in zip(args, input_shapes)]
2636
2637 outputs = None
2638 otypes = self.otypes
2639 nout = len(output_core_dims)
2640
2641 for index in np.ndindex(*broadcast_shape):
2642 results = func(*(arg[index] for arg in args))
2643
2644 n_results = len(results) if isinstance(results, tuple) else 1
2645
2646 if nout != n_results:
2647 raise ValueError(
2648 f'wrong number of outputs from pyfunc: expected {nout!r}, '
2649 f'got {n_results!r}'
2650 )
2651
2652 if nout == 1:
2653 results = (results,)
2654
2655 if outputs is None:
2656 for result, core_dims in zip(results, output_core_dims):
2657 _update_dim_sizes(dim_sizes, result, core_dims)
2658
2659 outputs = _create_arrays(broadcast_shape, dim_sizes,
2660 output_core_dims, otypes, results)
2661
2662 for output, result in zip(outputs, results):
2663 output[index] = result
2664
2665 if outputs is None:
2666 # did not call the function even once
2667 if otypes is None:
2668 raise ValueError('cannot call `vectorize` on size 0 inputs '
2669 'unless `otypes` is set')
2670 if builtins.any(dim not in dim_sizes
2671 for dims in output_core_dims
2672 for dim in dims):
2673 raise ValueError('cannot call `vectorize` with a signature '
2674 'including new output dimensions on size 0 '
2675 'inputs')
2676 outputs = _create_arrays(broadcast_shape, dim_sizes,

Callers 1

_vectorize_callMethod · 0.95

Calls 7

asanyarrayFunction · 0.85
_parse_input_dimensionsFunction · 0.85
_calculate_shapesFunction · 0.85
_update_dim_sizesFunction · 0.85
_create_arraysFunction · 0.85
funcFunction · 0.70
anyMethod · 0.45

Tested by

no test coverage detected