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。事前に完全にリストを作成するか、必要に応じて または をhstack使用してください。vstack

于 2013-04-04T07:25:36.833 に答える