想要将 numpy 数组作为参数传递给函数?这是怎么做到的?我可以像下面所示的那样简单地传递它吗?
def force(x,y,z):
for i in range(N):
for j in range(i+1,N,1):
xij=x[i]-x[j]
yij=y[i]-y[j]
zij=z[i]-z[j]
Python 是一种动态语言,这意味着编译期间不会进行类型检查。您可以将任何内容传递给函数。
我相信在较新版本(我使用1.13)的numpy中,您可以通过将numpy数组传递给您为标量类型编写的函数来简单地调用该函数,它会自动将函数调用应用于numpy数组上的每个元素并返回你又是一个 numpy 数组
>>> import numpy as np
>>> squarer = lambda t: t ** 2
>>> x = np.array([1, 2, 3, 4, 5])
>>> squarer(x)
array([ 1, 4, 9, 16, 25])
在 Python 3.11.6 中,您可以将 numpy 数组传递给用户定义的函数。应用于数组的函数和返回的对象是一个 numpy 数组:
>>> import numpy as np
>>> def f(x):
... return 3*x**2 - 4*x + 5
...
>>> f(3.0)
20.0
>>> xs = np.arange(-5,5,0.25)
>>> ys = f(xs)
>>> ys
array([100. , 91.6875, 83.75 , 76.1875, 69. , 62.1875,
55.75 , 49.6875, 44. , 38.6875, 33.75 , 29.1875,
25. , 21.1875, 17.75 , 14.6875, 12. , 9.6875,
7.75 , 6.1875, 5. , 4.1875, 3.75 , 3.6875,
4. , 4.6875, 5.75 , 7.1875, 9. , 11.1875,
13.75 , 16.6875, 20. , 23.6875, 27.75 , 32.1875,
37. , 42.1875, 47.75 , 53.6875])
>>> type(ys)
<class 'numpy.ndarray'>
# lifted from
# https://github.com/karpathy/nn-zero-to-hero/blob/master/lectures/micrograd/micrograd_lecture_first_half_roughly.ipynb