1

我对 Python 很陌生。我知道当尝试将字符串与分数相乘时会发生此错误,即浮点数。就我而言,我无法弄清楚 numpy 浮点数组如何成为字符串。这是完整的代码。

#!usr/bin/python

import os
import numpy as np
import matplotlib.pyplot as plt
import pylab
from numpy import *

# Declaration of constants

K = 3.14159265359
N= 10
p_za=[]
pv_za_temp=[]
#-----------------------
#Allotment of particles
#-----------------------

p_initial = np.linspace(0,2,num=10)

pv_za_temp.append(np.array(p_initial))

print pv_za_temp

#Displacement of particles using Zeldovich Approximation
def t_range(start, end, step):
  while start <= end:
    yield start
    start += step

for t in t_range(0,1,0.1):
  print t
  p_za=[]
  pv_za=[]
  # Opening file in file_t format
  fname = 'file_' + str(t) + '.dat'
  fo = open(fname,'w')

# p_za.append(p_initial - t*K*np.sin(K*p_initial))
  pv_za.append(K*np.sin(K*pv_za_temp))
  pv_za_temp = []
  pv_za_temp.append(np.array(pv_za))

显示错误的行是:

pv_za.append(K*np.sin(K*pv_za_temp))

我无法弄清楚问题所在。当这条线显示错误时,它上面的线运行良好。错误信息是:

Traceback (most recent call last):
  File "ZA.py", line 40, in <module>
    pv_za.append(K*np.sin(K*pv_za_temp))
TypeError: can't multiply sequence by non-int of type 'float'

请帮忙!

4

1 回答 1

0

pv_za_temp是一个普通的 Python 列表,不支持标量乘法。您需要一个 NumPy 数组,您可以使用它从完整列表中创建它

pv_za_temp = np.array(pv_za_temp)

注意.array不支持.append。要么提前完全建立列表,要么使用hstackvstack酌情使用。

于 2013-04-04T07:25:36.833 回答