【问题标题】:Difficult case with TypeError: only size-1 arrays can be converted to Python scalarsTypeError 的难题:只有 size-1 的数组可以转换为 Python 标量
【发布时间】:2021-12-01 16:01:48
【问题描述】:

我正在尝试使用 plotly 绘制一个巨大的函数,该函数又是其他函数的总和 - 我想将较小的函数附加到数组中并将它们添加到最终函数中。具有简单功能的过程有效,例如:

import numpy as np 
import plotly.graph_objects as go
pi = math.pi
X, Y, Z = np.mgrid[-2:2:100j, -2:2:100j, -2:2:100j]
x=[pi*2,4]
values1 = pi*X*X+Y*Y
values2 = Z*Z
values.append(values1*x[0])
values.append(values2*x[1])
valuestot=values[0]+values[1]
fig = go.Figure(data=go.Isosurface(
    x=X.flatten(),
    y=Y.flatten(),
    z=Z.flatten(),
    value=valuestot.flatten(),
    isomin=-0.1,
    isomax=0.1
    ))
fig.show()

但是,当我使用更长的函数(相对于 values1)时会出现问题,例如:

n1s2 = nns21 * (((3 * nas21 / pi) ** (1 / 4)) * math.exp( -nas21 * ((X + cXN1) ** 3 + (Y + cYN1) ** 2 + (Z + cZN1) ** 2))) + nns22 * ( ((2 * nas22 / pi) ** (1 / 4)) * math.exp( -nas22 * ((X + cXN1) ** 2 + (Y + cYN1) ** 3 + (Z + cZN1) ** 2)))

对于代码中的函数行给出 TypeError: only size-1 arrays can convert to Python scalars 错误。 我尝试了所有在不同论坛上给出的 np.vectorize() 解决方案,但这无济于事,因为 python 可能会将长行读取为项目列表。如何使该行读取为 python 识别的单个函数?感谢您的帮助。

【问题讨论】:

    标签: python arrays function plotly scalar


    【解决方案1】:

    成功 - 收到一位出色的 CS 学生的建议,将 math.exp() 更改为 np.exp(),以便不同的指数代表不同的 mgrid 向量 (X,Y,Z)。

    【讨论】:

      猜你喜欢
      • 2023-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多