【发布时间】:2021-12-09 14:26:39
【问题描述】:
我正在尝试对 python 中的 dat 文件执行乘法运算。文件在这里:
我的代码如下:
P = np.loadtxt('ref-099_matterpower.dat', unpack = True)
deltaFourierSpace = math.sqrt(P*L) * np.exp(zeta*1j)
一切都已正确定义,所以不要太担心。 'L' 和 'zeta' 是常数,所以基本上我试图将每个 k/h 值的 P 值乘以 L 并平方根表达式。无论如何,问题是当我尝试运行代码时如下:
TypeError: only size-1 arrays can be converted to Python scalars.
这个问题变得有点烦人,在使用 vectorize 函数时:
deltaFourierSpace = math.sqrt(np.vectorize(P)*L)*np.exp(zeta*1j)
我收到了这条消息:
TypeError: unsupported operand type(s) for 'vectorize' and 'int'
如果有人能提供帮助,我将不胜感激。谢谢!
【问题讨论】:
-
您不能只“正确定义”了所有代码。我们需要看到一些东西。见minimal, reproducible example。
-
math函数仅适用于标量值。您不能将它们与数组一起使用!请花时间阅读函数文档。我不知道你想用np.vectorize做什么,我怀疑你也不知道。 -
令人费解的是,您在一处使用
np.exp,而在另一处使用math.sqrt。这种选择背后的逻辑是什么? -
另外,你真的检查过
loadtxt产生的P吗?它的形状是什么?类型?试试P*L?
标签: python arrays numpy matplotlib