gpt4 book ai didi

python - 如何在 numpy.fromfunction 中使用范围?

转载 作者:行者123 更新时间:2023-12-01 02:06:03 25 4
gpt4 key购买 nike

我正在尝试为我定义的函数创建一个矩阵,其索引 (i,j) 处的值为 f(i,j),。我正在尝试使用 numpy.fromfunction 来执行此操作,但无法使其正常工作。这是代码

import numpy as np

def f(i,j):
return sum((i+1)//k for k in np.arange(1,j+2))

def M(N):
shape = np.array([N,N])
np.fromfunction(f, shape,dtype = np.int)

A= M(5)

我收到错误

builtins.TypeError: only length-1 arrays can be converted to Python scalars

在对fromfunction的调用中,我想它一定与np.arange有关。

最初,我有range(1,j+2),但后来收到错误

TypeError: only integer scalar arrays can be converted to a scalar index

你能告诉我我需要做什么吗?

最佳答案

我认为你必须首先矢量化 f:

>>> np.fromfunction(np.vectorize(f), (5, 5), dtype=int)
array([[ 1, 1, 1, 1, 1],
[ 2, 3, 3, 3, 3],
[ 3, 4, 5, 5, 5],
[ 4, 6, 7, 8, 8],
[ 5, 7, 8, 9, 10]])

事实上,fromfunction 不是一一传递坐标,而是一次性传递坐标:

>>> def f(i, j):
... print(i, j)
... return sum((i+1)//k for k in range(1, j+2))
...
>>> np.fromfunction(f, (5, 5), dtype=int)
[[0 0 0 0 0]
[1 1 1 1 1]
[2 2 2 2 2]
[3 3 3 3 3]
[4 4 4 4 4]] [[0 1 2 3 4]
[0 1 2 3 4]
[0 1 2 3 4]
[0 1 2 3 4]
[0 1 2 3 4]]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/paul/local/lib/python3.6/site-packages/numpy/core/numeric.py", line 1914, in fromfunction
return function(*args, **kwargs)
File "<stdin>", line 3, in f
TypeError: only integer scalar arrays can be converted to a scalar index

关于python - 如何在 numpy.fromfunction 中使用范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49059667/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com