如何将用户定义的函数应用于每个numpy数组元素

时间:2015-05-22 19:40:24

标签: python arrays numpy

我想将函数应用于我的numpy数组的每个元素。 我做了这样的事情;但它仍然打印原始数组。可能是什么问题?

def my_func(k):
    3.15+ k*12**45+16

arr = np.array([12,45,45],[12,88,63])
my_func(arr)
print (arr)

2 个答案:

答案 0 :(得分:5)

试试这个:

def my_func(k):
    return 3.15 + k * 12 ** 45 + 16

arr = np.array([[12, 45, 45], [12, 88, 63]])
print my_func(arr)

输出:

[[4.388714385610605e+49 1.6457678946039768e+50 1.6457678946039768e+50]
 [4.388714385610605e+49 3.218390549447777e+50 2.3040750524455676e+50]]

问题是您没有从函数返回值。然后,您没有正确定义np.array的数据。最后,您不要将my_func的结果设置为变量。

答案 1 :(得分:0)

如果你这样做:

import numpy as np

def my_func(k):
    return 3.15 + k*12**45+16

arr = np.array(([12,45,45],[12,88,63]))
print (arr)
arr = my_func(arr)
print (arr)

你明白了:

[[12 45 45]
 [12 88 63]]
[[4.388714385610605e+49 1.6457678946039768e+50 1.6457678946039768e+50]
 [4.388714385610605e+49 3.218390549447777e+50 2.3040750524455676e+50]]