简体   繁体   中英

Numpy apply function to array

For example, I have function:

f1 = lambda x: x % 2

If I want to modify array = np.linspace(0, 5, 6) I can do f1(array) . Everything works as expected:

[0. 1. 0. 1. 0. 1.]

If I change function to:

f2 = lambda x: 0
print(f2(array))

gives me 0 while I expected [0. 0. 0. 0. 0. 0.] [0. 0. 0. 0. 0. 0.] . How to achieve consistency?

You can use below code to achieve desirable output

import numpy as np
array = np.linspace(0, 5, 6)
f2 = lambda x: x-x
print(f2(array))

Slightly more explicit than previous answer :

import numpy as np
array = np.linspace(0, 5, 6)
f2 = lambda x: np.zeros_like(x)
print(f2(array))

Documentation for numpy.zeros_like : Return an array of zeros with the same shape and type as a given array.

To iterate over an array, evaluate the function for every element, then store it to a resulting array, a list iterator works consistently:

import numpy as np
array = np.linspace(0, 5, 6)
f1 = lambda x: x % 2
f2 = lambda x: 0

print ([f1(x) for x in array])

[0.0, 1.0, 0.0, 1.0, 0.0, 1.0]

print ([f2(x) for x in array])

[0, 0, 0, 0, 0, 0]

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM