Python 我认为在“测试”过程中出现了一个错误;如果; astropy.io导入拟合中的 从scipy.ndimage导入高斯滤波器 将numpy作为np导入 将matplotlib.pyplot作为plt导入 导入pdb #创建空图像 nx,ny=512,512 图像=np.零((ny,nx)) #设定星星数 n=10000 #生成随机位置 r=np.随机.随机(n)*nx θ=np.随机均匀(0,2.*np.pi,n) #生成随机通量 f=np.随机。随机(n)**2 #计算位置 x=nx/2+r*np.cos(θ) y=ny/2+r*np.sin(θ) #在图像中添加星星 #==>第一个for循环和if语句=0和x[i]=0和y[i]
在i=3和i=4之间可能会出现错误?? 它发出这样的信息 索引器错误:只有整数、片(Python 我认为在“测试”过程中出现了一个错误;如果; astropy.io导入拟合中的 从scipy.ndimage导入高斯滤波器 将numpy作为np导入 将matplotlib.pyplot作为plt导入 导入pdb #创建空图像 nx,ny=512,512 图像=np.零((ny,nx)) #设定星星数 n=10000 #生成随机位置 r=np.随机.随机(n)*nx θ=np.随机均匀(0,2.*np.pi,n) #生成随机通量 f=np.随机。随机(n)**2 #计算位置 x=nx/2+r*np.cos(θ) y=ny/2+r*np.sin(θ) #在图像中添加星星 #==>第一个for循环和if语句=0和x[i]=0和y[i],python,numpy,Python,Numpy,在i=3和i=4之间可能会出现错误?? 它发出这样的信息 索引器错误:只有整数、片(:)、省略号(…)、numpy.newaxis(None)和整数或布尔数组是有效的索引 有人帮我吗?你必须把y[i]和x[i]作为int: from astropy.io import fits from scipy.ndimage import gaussian_filter import numpy as np import matplotlib.pyplot as plt import pdb # Cre
:
)、省略号(…
)、numpy.newaxis(None
)和整数或布尔数组是有效的索引
有人帮我吗?你必须把
y[i]
和x[i]
作为int:
from astropy.io import fits
from scipy.ndimage import gaussian_filter
import numpy as np
import matplotlib.pyplot as plt
import pdb
# Create empty image
nx, ny = 512, 512
image = np.zeros((ny, nx))
# Set number of stars
n = 10000
# Generate random positions
r = np.random.random(n) * nx
theta = np.random.uniform(0., 2. * np.pi, n)
# Generate random fluxes
f = np.random.random(n) ** 2
# Compute position
x = nx / 2 + r * np.cos(theta)
y = ny / 2 + r * np.sin(theta)
# Add stars to image
# ==> First for loop and if statement <==
for i in range(n):
#pdb.set_trace()
if x[i] >= 0 and x[i] < nx and y[i] >= 0 and y[i] < ny:
#print(i)
#pdb.set_trace()
image[y[i], x[i]] += f[i]
#print(i)
# Convolve with a gaussian
image = gaussian_filter(image, 1)
# Add noise
image += np.random.normal(3., 0.01, image.shape)
# Write out to FITS image
fits.writeto('cluster.fits', image, clobber=True)
当然不是浮点数 你觉得呢?你运行代码了吗?发生了什么事?发布准确的错误消息。显然,您正在尝试使用整数以外的内容对列表进行索引。您有
image[y[i],x[i]
但是x
和y
是浮点数组,因此不能将它们用作数组索引。
image[int(y[i]),int(x[i])]