小编Aer*_*ero的帖子

Python numpy:根据坐标创建二维数组

我有一个包含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)

更换Nan0就可以了,太多; 我的主要问题是首先创建2D数组.在此先感谢您的帮助!

python arrays numpy

13
推荐指数
2
解决办法
1万
查看次数

Python 2D高斯拟合数据中的NaN值

我是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)

python numpy gaussian scipy

5
推荐指数
1
解决办法
2370
查看次数

Pandas 数据框通过查找子字符串替换多列中的字符串

我有一个非常大的熊猫数据框,其中包含字符串和整数列。我想在整个数据框中搜索特定子字符串,如果找到,用其他内容替换完整字符串。

我找到了一些通过指定要搜索的列来执行此操作的示例,如下所示:

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行不通的,因为我只是在搜索子字符串。谢谢你的帮助!

python-2.7 pandas

3
推荐指数
1
解决办法
8831
查看次数

标签 统计

numpy ×2

python ×2

arrays ×1

gaussian ×1

pandas ×1

python-2.7 ×1

scipy ×1