Numpy fromfunction() Function



The Numpy fromfunction() function is used to construct an array by executing a function over each coordinate. The resultant array has a value fn(x, y, z) at coordinate (x, y, z) and this function is useful for generating arrays based on a mathematical function applied to the indices of the array.

Syntax

Following is the syntax of the Numpy fromfunction() function −

 
numpy.fromfunction(function, shape,dtype=float, **kwargs)

Parameters

Following are the parameters of the Numpy fromfunction() function −

  • function - A function that accepts N parameters, where N is the rank (number of dimensions) of the array. It is applied to each coordinate in the array.
  • shape - A tuple of integers specifying the shape of the output array. The length of this tuple determines the number of dimensions of the array.
  • dtype (optional) - The data type of the returned array. By default, it is set to float, but it can be specified as any NumPy dtype, such as int, float64, etc.
  • kwargs (optional) - This is the additional keyword arguments passed to the function.

Return Value

This function returns a NumPy array where each element is the result of applying the given function to the corresponding index values.

Example

Following is a basic example to generate a 2D array where each element is the sum of its indices using the Numpy fromfunction() function −

import numpy as np
# Define a function to apply to each coordinate
def func(x, y):
    return x + y

# Create a 4x4 array using fromfunction
array = np.fromfunction(func, (4, 4), dtype=int)
print("Generated Numpy Array:")
print(array)

Output

Following is the output of the above code −

Generated Numpy Array:
[[0 1 2 3]
 [1 2 3 4]
 [2 3 4 5]
 [3 4 5 6]]

Example - Applying a Mathematical Function

In the following example, we have generated a 3x3 array using numpy.fromfunction that calculates the product of the indices −

import numpy as np

# Define a function to calculate the product of indices
def product(x, y):
    return x * y

# Create a 3x3 array using fromfunction
array = np.fromfunction(product, (3, 3), dtype=int)
print("Product of Indices Array:")
print(array)

Output

Following is the output of the above code −

Product of Indices Array:
[[0 0 0]
 [0 1 2]
 [0 2 4]]

Example - Higher Dimensional Array

Here, we have generated a multi-dimensional array with sums the three indices function using numpy.fromfunction()

import numpy as np

# Define a function that sums three indices
def func_3d(x, y, z):
    return x + y + z

# Create a 3x3x3 array using fromfunction
array_3d = np.fromfunction(func_3d, (3, 3, 3), dtype=int)
print("Generated 3D Array:")
print(array_3d)

Output

Following is the output of the above code −

Generated 3D Array:
[[[0 1 2]
  [1 2 3]
  [2 3 4]]

 [[1 2 3]
  [2 3 4]
  [3 4 5]]

 [[2 3 4]
  [3 4 5]
  [4 5 6]]]

Example - Generating Complex Arrays

We can use numpy.fromfunction() to generate arrays based on more complex mathematical functions. Heres an example where we generate an array based on a sine function −

import numpy as np

# Define a sine function to apply to indices
def sine_func(x, y):
    return np.sin(x) + np.cos(y)

# Create a 4x4 array using fromfunction
array = np.fromfunction(sine_func, (4, 4))
print("Generated Array with Sine and Cosine:")
print(array)

Output

Following is the output of the above code −

Generated Array with Sine and Cosine:
[[1.         0.54030231 0.        -0.41614684]
 [1.84147098 1.38177329 0.84147098 0.42532415]
 [1.90929743 1.44959973 0.90929743 0.4931506 ]
 [1.14112001 0.68142231 0.14112001 -0.27502696]]
numpy_array_creation_routines.htm
Advertisements