【问题标题】:TypeError: can't multiply sequence by non-int of type 'float' : prblem with NumPy arraysTypeError:不能将序列乘以“float”类型的非整数:NumPy 数组的问题
【发布时间】:2013-04-04 07:22:36
【问题描述】:

我对 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'

请帮忙!

【问题讨论】:

    标签: arrays numpy python-3.x floating-point


    【解决方案1】:

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

    从完整列表中创建该数组
    pv_za_temp = np.array(pv_za_temp)
    

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

    【讨论】:

    • Traceback (most recent call last): File "ZA.py", line 22, in &lt;module&gt; pv_za_temp.append(np.array(p_initial)) AttributeError: 'numpy.ndarray' object has no attribute 'append' 在声明 pv_za_temp = [] 之后尝试将列表转换为 NumPy 数组时出现此错误
    • 是的...这可以使用pv_za_temp = np.array(p_initial) 来克服:)
    • 这是对主题的轻微转移。我不知道我是否应该开始一个新线程。如何将 NumPy 浮点数组写入文件?这是我收到的错误fo.write('{0:f} {1:f} \n'.format(np.array(p_initial),np.array(pv_za))) ValueError: Unknown format code 'f' for object of type 'str'
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-30
    • 2012-10-09
    • 2017-02-04
    • 2019-03-21
    • 2021-10-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多