Python 如何创建一个Nx1维数组,其中每个元素都是另一个数组的函数?
返回错误: TypeError:“float”对象不可编辑Python 如何创建一个Nx1维数组,其中每个元素都是另一个数组的函数?,python,Python,返回错误: TypeError:“float”对象不可编辑 我只想创建一个与I大小相同的Gc数组,其中每个元素都是I的函数Gc.extend需要一个列表,而不是浮动。您很可能希望改用Gc.append(K3),因为它采用标量而不是列表,您可以使用函数(内置)或列表理解来实现这一点 例如,假设要将函数foo()应用于整个项目列表(i),则可以编写: import math as m import numpy as np i = np.mgrid[1:21:1] N = [1,1,0] def G1
我只想创建一个与
I
大小相同的Gc
数组,其中每个元素都是I
的函数Gc.extend
需要一个列表
,而不是浮动
。您很可能希望改用Gc.append(K3)
,因为它采用标量而不是列表
,您可以使用函数(内置)或列表理解来实现这一点
例如,假设要将函数foo()
应用于整个项目列表(i
),则可以编写:
import math as m
import numpy as np
i = np.mgrid[1:21:1]
N = [1,1,0]
def G1(i):
H1 = i**2
H2 = 2*H1
return H2
def G2(i):
H1 = i**3
H2 = 3*H1
return H2
def G3(i):
H1 = i**4
H2 = 4*H1
return H2
Gc = []
for a in xrange(1,21):
K1 = [G1(i)[i[a]], G2(i)[i[a]], G3(i)[i[a]]]
K2 = np.multiply(N,K1)
K3 = m.fsum(K2)
Gc.extend(K3)
或
这将为您提供一个列表Gc
,如下所示:
Gc = [foo(x) for x in i]
这两种方法也适用于多个参数的函数,即:
[foo(i[1]), foo(i[2]), ... , foo(i[n])]
或
你的问题很含糊。在不深入了解细节和提出解决方案的情况下,我将尝试解决我在代码中看到的问题
Gc.extend([K3])
的东西K1=[G1(i)[i[a]],G2(i)[i[a]],G3(i)[i[a]]]
。当a=19时,i[a]
将是'20',但i的长度以及G(i)是20。因此,您还需要适当地纠正它李>
编辑***在试图从你的计划和你的结语陈述中理解之后,我提出了这个解决方案
Gc = [foo(i,x) for i,x in enumerate(i)]
list.extend()
返回None
。为什么这个问题被标记为.net?
def foo(a,b):
return a*b**a
Gc = map(foo,i,q) # i and q are lists of equal length
Gc = [foo(i,x) for i,x in enumerate(i)]
for a in xrange(0,20):
GCArray=[G1,G2,G3] #Array of Functions
# You can also do [g(i[a]) for g in [G1,G2,G3]]
K1 = [g(i[a]) for g in GCArray] #Apply ath i to all the functions
K2 = np.multiply(N,K1) #Rest Similar to yours
K3 = m.fsum(K2)
Gc.extend([K3])