我有一个包含3列的文件,其中前两个是坐标(x,y),第三个是与该位置对应的值(z).这是一个简短的例子:
x y z
0 1 14
0 2 17
1 0 15
1 1 16
2 1 18
2 2 13
Run Code Online (Sandbox Code Playgroud)
我想根据文件中的x,y坐标从第三行创建一个二维值数组.我在每列中读取一个单独的数组,并使用numpy.meshgrid创建了x值和y值的网格,如下所示:
x = [[0 1 2] and y = [[0 0 0]
[0 1 2] [1 1 1]
[0 1 2]] [2 2 2]]
Run Code Online (Sandbox Code Playgroud)
但我是Python新手,不知道如何生成第三个z值网格,如下所示:
z = [[Nan 15 Nan]
[14 16 18]
[17 Nan 13]]
Run Code Online (Sandbox Code Playgroud)
更换Nan用0就可以了,太多; 我的主要问题是首先创建2D数组.在此先感谢您的帮助!
我是Python的新手,但我正在尝试为某些数据生成2D高斯拟合.具体而言,恒星通量与坐标系/网格中的某些位置相关联.然而,并非我的网格中的所有位置都具有相应的通量值.我真的不想将这些值设置为零,以防它偏向于我的拟合,但我似乎无法将它们设置为nan仍然让我的高斯适合工作.这是我正在使用的代码(从这里略微修改):
import numpy
import scipy
from numpy import *
from scipy import optimize
def gaussian(height, center_x, center_y, width_x, width_y):
width_x = float(width_x)
width_y = float(width_y)
return lambda x,y: height*exp(-(((center_x-x)/width_x)**2+((center_y-y)/width_y)**2)/2)
def moments(data):
total = nansum(data)
X, Y = indices(data.shape)
center_x = nansum(X*data)/total
center_y = nansum(Y*data)/total
row = data[int(center_x), :]
col = data[:, int(center_y)]
width_x = nansum(sqrt(abs((arange(col.size)-center_y)**2*col))/nansum(col))
width_y = nansum(sqrt(abs((arange(row.size)-center_x)**2*row))/nansum(row))
height = nanmax(data)
return height, center_x, center_y, width_x, width_y
def fitgaussian(data):
params = moments(data)
errorfunction = lambda p: …Run Code Online (Sandbox Code Playgroud) 我有一个非常大的熊猫数据框,其中包含字符串和整数列。我想在整个数据框中搜索特定子字符串,如果找到,用其他内容替换完整字符串。
我找到了一些通过指定要搜索的列来执行此操作的示例,如下所示:
df = pd.DataFrame([[1,'A'], [2,'(B,D,E)'], [3,'C']],columns=['Question','Answer'])
df.loc[df['Answer'].str.contains(','), 'Answer'] = 'X'
Run Code Online (Sandbox Code Playgroud)
但是因为我的数据框有几十个没有特定顺序的字符串列,所以我不想全部指定它们。据我所知,使用是df.replace行不通的,因为我只是在搜索子字符串。谢谢你的帮助!