【问题标题】:TypeError: can't multiply sequence by non-int of type 'float',Thanks a lotTypeError:不能将序列乘以“float”类型的非整数,非常感谢
【发布时间】:2019-10-16 15:21:01
【问题描述】:
def lamb_0(x):

    return (1-x)/2

def lamb_1(x):

    return (1+x)/2

x = np.array([0.5773502691896257645091488,-0.5773502691896257645091488])

Right_item_2 = (1/2)*np.array([(-1/2)*[(C_n[0,j]*lamb_0(x[0])+C_n[1,j]*lamb_1(x[0]))*(R_n[0,j]*lamb_0(x[0])+R_n[1,j]*lamb_1(x[0]))+(C_n[0,j]*lamb_0(x[1])+C_n[1,j]*lamb_1(x[1]))*(R_n[0,j]*lamb_0(x[1])+R_n[1,j]*lamb_1(x[1]))],(1/2)*[(C_n[0,j]*lamb_0(x[0])+C_n[1,j]*lamb_1(x[0]))*(R_n[0,j]*lamb_0(x[0])+R_n[1,j]*lamb_1(x[0]))+(C_n[0,j]*lamb_0(x[1])+C_n[1,j]*lamb_1(x[1]))*(R_n[0,j]*lamb_0(x[1])+R_n[1,j]*lamb_1(x[1]))]],dtype=float)
TypeError: can't multiply sequence by non-int of type 'float'
#mark:C_n,R_n,S_n are arraies in 2 dimension

【问题讨论】:

  • 为什么是 [], [(C_n[0,j] ... ?一步一步地确保最后一行是正确的。该错误表明您创建了一个列表,并尝试将其乘以一个浮点数,例如1/2[] 列个清单。 () 只是对数学表达式进行分组。不要混淆两者。
  • 那是一些极其晦涩难懂的代码。当然必须有更好的方法来做到这一点,对吧?好像有很多重复,大概有办法用循环重写吧。

标签: numpy


【解决方案1】:

首先将计算分成几行。

Right_item_2 = (1/2)*np.array([
    (-1/2)*[        # Here you multiply a list by (-1/2). Should it be ( not [?

        (C_n[0,j]*lamb_0(x[0])+C_n[1,j]*lamb_1(x[0]))*
        (R_n[0,j]*lamb_0(x[0])+R_n[1,j]*lamb_1(x[0]))+
        (C_n[0,j]*lamb_0(x[1])+C_n[1,j]*lamb_1(x[1]))*
        (R_n[0,j]*lamb_0(x[1])+R_n[1,j]*lamb_1(x[1]))
    ],
    (1/2)*[         # Here you multiply a list by (-1/2)

        (C_n[0,j]*lamb_0(x[0])+C_n[1,j]*lamb_1(x[0]))*
        (R_n[0,j]*lamb_0(x[0])+R_n[1,j]*lamb_1(x[0]))+
        (C_n[0,j]*lamb_0(x[1])+C_n[1,j]*lamb_1(x[1]))*
        (R_n[0,j]*lamb_0(x[1])+R_n[1,j]*lamb_1(x[1]))
    ]
],dtype=float)

据我所知,这两个计算是相同的,res 如下。

res = (C_n[0,j]*lamb_0(x[0])+C_n[1,j]*lamb_1(x[0]))*
      (R_n[0,j]*lamb_0(x[0])+R_n[1,j]*lamb_1(x[0]))+
      (C_n[0,j]*lamb_0(x[1])+C_n[1,j]*lamb_1(x[1]))*
      (R_n[0,j]*lamb_0(x[1])+R_n[1,j]*lamb_1(x[1]))

Right_itm_2 = np.array[-.5*res, .5*res]

仍有空间使res 计算更具可读性和更少重复

【讨论】:

    猜你喜欢
    • 2010-12-30
    • 2012-10-09
    • 1970-01-01
    • 2017-02-04
    • 2019-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-04
    相关资源
    最近更新 更多