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

6
我想对我的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)

“3.15 + arr*12**45+16” 这样不就可以了吗? - Zero
你是否想从该函数返回一些内容,并使用 arr 而不是 ar,然后将其重新赋值给 arr - Ry-
我有一个更复杂的函数,它需要一个单一的值作为参数,但我想将其应用于整个数组,这可行吗? - user3841581
2个回答

7

试试这个:

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的结果设置为变量。

它可行。谢谢。我没有把结果保存到另一个数组中。谢谢。 - user3841581
@JuniorCompressor 我有一个问题,当我尝试在向量上使用它时,出现了这样的错误:TypeError: only length-1 arrays can be converted to Python scalars。 - user3841581

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]]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接