# numpy.fromfunction¶

`numpy.``fromfunction`(function, shape, *, dtype=<class 'float'>, like=None, **kwargs)[source]

Construct an array by executing a function over each coordinate.

The resulting array therefore has a value `fn(x, y, z)` at coordinate `(x, y, z)`.

Parameters
functioncallable

The function is called with N parameters, where N is the rank of `shape`. Each parameter represents the coordinates of the array varying along a specific axis. For example, if `shape` were `(2, 2)`, then the parameters would be `array([[0, 0], [1, 1]])` and `array([[0, 1], [0, 1]])`

shape(N,) tuple of ints

Shape of the output array, which also determines the shape of the coordinate arrays passed to function.

dtypedata-type, optional

Data-type of the coordinate arrays passed to function. By default, `dtype` is float.

likearray_like

Reference object to allow the creation of arrays which are not NumPy arrays. If an array-like passed in as `like` supports the `__array_function__` protocol, the result will be defined by it. In this case, it ensures the creation of an array object compatible with that passed in via this argument.

Note

The `like` keyword is an experimental feature pending on acceptance of NEP 35.

New in version 1.20.0.

Returns
fromfunctionany

The result of the call to function is passed back directly. Therefore the shape of `fromfunction` is completely determined by function. If function returns a scalar value, the shape of `fromfunction` would not match the `shape` parameter.

Notes

Keywords other than `dtype` are passed to function.

Examples

```>>> np.fromfunction(lambda i, j: i == j, (3, 3), dtype=int)
array([[ True, False, False],
[False,  True, False],
[False, False,  True]])
```
```>>> np.fromfunction(lambda i, j: i + j, (3, 3), dtype=int)
array([[0, 1, 2],
[1, 2, 3],
[2, 3, 4]])
```