我试图在1D数组中设置r(这是一个序列)的值。所以,我可以进一步使用它来构建一个2D数组。下面写的代码给出以下错误:
文件“V_urc_3D.py”,第28行,in
r [j] = np.linspace(0.01,lim,500)
ValueError:使用序列设置数组元素。
任何人都可以帮忙解决这个问题。
from __future__ import division
import numpy as np
import math
import matplotlib.pylab as plt
import matplotlib as mpl
from mpl_toolkits.mplot3d import Axes3D
Mh = np.linspace(10**11, 10**13, 5)
Rv = 259.3*(Mh/10**12)**(1/3)
r = np.zeros(len(Rv))
for j in np.arange(len(Rv)):
lim = Rv[j]
r[j] = np.linspace(0.01,lim,500)
答案 0 :(得分:0)
r = np.zeros(len(Rv))
创建一个用零初始化的numpy数组,它是(默认情况下)浮点值。
在错误跟踪引用的行中,您尝试将np.linspace(0.01, lim, 500)
(这是一个包含500个浮点值的数组)分配给只有单个空间的内存位置浮点值;因此错误。
要立即修复,请为r
的初始化添加维度,特别是r = np.zeros(len(Rv), 500)
。如果您对更高级的语法感兴趣,列表推导可以提高您的速度:
r = np.array([np.linspace(0.01,lim,500) for lim in Rv])