我有一个类似于这个的熊猫框架:
import pandas as pd
import numpy as np
data = {'Col1' : [4,5,6,7], 'Col2' : [10,20,30,40], 'Col3' : [100,50,-30,-50], 'Col4' : ['AAA', 'BBB', 'AAA', 'CCC']}
df = pd.DataFrame(data=data, index = ['R1','R2','R3','R4'])
Col1 Col2 Col3 Col4
R1 4 10 100 AAA
R2 5 20 50 BBB
R3 6 30 -30 AAA
R4 7 40 -50 CCC
Run Code Online (Sandbox Code Playgroud)
给定一系列目标:
target_array = np.array(['AAA', 'CCC', 'EEE'])
Run Code Online (Sandbox Code Playgroud)
我想找到Col4其中也出现的单元格元素索引target_array.
我试图找到一个记录在案的答案,但这似乎超出了我的技能......任何人都有任何建议吗?
PS顺便提一下,对于这种特殊情况,我可以输入一个目标数组,其元素是数据帧索引名array(['R1', 'R3', 'R5']).这样会更容易吗?
编辑1:
非常感谢你们所有的回复.可悲的是,我只能选择一个,但每个人似乎都认为@Divakar是最好的.仍然应该看看piRSquared和MaxU速度比较所有可能的可能性
嗨,我想问我的同伴python用户如何执行他们的线性拟合.
我一直在搜索方法/库的最后两周来执行此任务,我想分享我的经验:
如果您想基于最小二乘法执行线性拟合,您有很多选择.例如,您可以在numpy和scipy中找到类.我自己选择了由linfit呈现的那个(遵循IDL中linfit函数的设计):
http://nbviewer.ipython.org/github/djpine/linfit/blob/master/linfit.ipynb
此方法假定您在y轴坐标中引入sigmas以适合您的数据.
但是,如果您已经量化了x轴和y轴的不确定性,则没有太多选项.(在主要的python科学图书馆中没有IDL"Fitexy"等价物).到目前为止,我只找到了"kmpfit"库来执行此任务.幸运的是,它有一个非常完整的网站,描述了它的所有功能:
https://github.com/josephmeiring/kmpfit http://www.astro.rug.nl/software/kapteyn/kmpfittutorial.html#
如果有人知道其他方法,我也很想知道它们.
无论如何,我希望这会有所帮助.
我想知道是否有人可以帮助我解决这个问题:
我正在学习使用 github,到目前为止仅从 pycharm 开始。最近,我用新的用户名、电子邮件和地址更新了我的 github 页面。我在“设置 - > 版本控制 - > Github”中更改了 pycharm 中的凭据并运行测试我确实收到消息成功连接。然而,每当我尝试提交我的项目时,我都会收到一条失败的连接消息,因为它试图到达旧地址。这是我得到的消息:
Push failed:
ProjectName: failed with error: Authentication failed for 'Old_Repositoriy_url'
Run Code Online (Sandbox Code Playgroud)
似乎其他用户也遇到了类似的错误,但是,我不知道如何从终端更改我的 git 凭据...
我在 ubuntu 16.04 中使用 pycharm 2017.2
谢谢你的任何建议
我正在编写一个从文本文件中读取数据的代码.我使用numpy loadtxt加载数据,它看起来像这样:
import numpy as np
Shop_Products = np.array(['Tomatos', 'Bread' , 'Tuna', 'Milk', 'Cheese'])
Shop_Inventory = np.array([12, 6, 10, 7, 8])
Run Code Online (Sandbox Code Playgroud)
我想检查一下我的产品:
Shop_Query = np.array(['Cheese', 'Bread']
Run Code Online (Sandbox Code Playgroud)
现在我想在Shop_Products数组中找到这些"items"indeces,而不进行for循环和检查.
我想知道是否可以使用任何numpy方法:我想使用intercept1d找到常见项目然后使用searchsorted.但是,我无法对"产品"列表进行排序,因为我不想放弃原始排序(例如,我会使用索引直接查找每个产品的库存).
关于"pythonish"解决方案的任何建议?
我有一个数据帧列,看起来像这样:
s = pd.Series(["a0a1a3", "b1b3", "c1c1c3c3"], index=["A", "B", "C"])
Run Code Online (Sandbox Code Playgroud)
我可以找到str.find方法在每个单元格中找到我想要的indeces:
s.str.find('1').values
array([3, 1, 1])
s.str.find('3').values
array([5, 3, 5])
Run Code Online (Sandbox Code Playgroud)
但是我找不到如何使用这些函数来剪切该列中的字符串.例如:
s.str[s.str.find('1').values:s.str.find('3').values].values
Run Code Online (Sandbox Code Playgroud)
给
array([ nan, nan, nan])
Run Code Online (Sandbox Code Playgroud)
哪种结合这些功能的正确方法?
我正在尝试去混合低分辨率光谱的发射线以获得高斯分量。该图代表我正在使用的数据类型:

经过一番搜索后,我发现的唯一选择是应用 kmpfit 包中的 gauest 函数(http://www.astro.rug.nl/software/kapteyn/kmpfittutorial.html#gauest)。我复制了他们的示例,但无法使其工作。
我想知道是否有人可以为我提供任何替代方法来执行此操作或如何更正我的代码:
import numpy as np
import matplotlib.pyplot as plt
from scipy import optimize
def CurveData():
x = np.array([3963.67285156, 3964.49560547, 3965.31835938, 3966.14111328, 3966.96362305,
3967.78637695, 3968.60913086, 3969.43188477, 3970.25463867, 3971.07714844,
3971.89990234, 3972.72265625, 3973.54541016, 3974.36791992, 3975.19067383])
y = np.array([1.75001533e-16, 2.15520995e-16, 2.85030769e-16, 4.10072843e-16, 7.17558032e-16,
1.27759917e-15, 1.57074192e-15, 1.40802933e-15, 1.45038722e-15, 1.55195653e-15,
1.09280316e-15, 4.96611341e-16, 2.68777266e-16, 1.87075114e-16, 1.64335999e-16])
return x, y
def FindMaxima(xval, yval):
xval = np.asarray(xval)
yval = np.asarray(yval)
sort_idx = np.argsort(xval)
yval = yval[sort_idx]
gradient = np.diff(yval)
maxima = …Run Code Online (Sandbox Code Playgroud) 我想使用 .fits 文件(天文图像)绘制绘图,并且我遇到了两个我认为它们相关的问题:
使用天文学中的这个例子:
from matplotlib import pyplot as plt
from astropy.io import fits
from astropy.wcs import WCS
from astropy.utils.data import download_file
fits_file = 'http://data.astropy.org/tutorials/FITS-images/HorseHead.fits'
image_file = download_file(fits_file, cache=True)
hdu = fits.open(image_file)[0]
wcs = WCS(hdu.header)
fig = plt.figure()
fig.add_subplot(111, projection=wcs)
plt.imshow(hdu.data, origin='lower', cmap='cubehelix')
plt.xlabel('RA')
plt.ylabel('Dec')
plt.show()
Run Code Online (Sandbox Code Playgroud)
我可以生成这个图像:
现在我想使用与图像相同的坐标绘制一些点:
plt.scatter(85, -2, color='red')
Run Code Online (Sandbox Code Playgroud)
但是,当我这样做时:
我正在绘制像素坐标。此外,图像不再与帧大小匹配(尽管坐标看起来不错)
关于如何处理这些问题有什么建议吗?
从天文学中借用这个例子:
import numpy as np
from matplotlib import pyplot as plt
from astropy.io import fits
from astropy.wcs import WCS
from astropy.utils.data import download_file
fits_file = 'http://data.astropy.org/tutorials/FITS-images/HorseHead.fits'
image_file = download_file(fits_file, cache=True)
hdu = fits.open(image_file)[0]
wcs = WCS(hdu.header)
fig = plt.figure()
ax = fig.add_subplot(111)
plt.imshow(hdu.data, origin='lower', cmap='cubehelix')
plt.xlabel('X')
plt.ylabel('Y')
x_array = np.arange(0, 1000)
line_1 = 1 * x_array + 20 * np.sin(0.05*x_array)
line_2 = x_array - 100 + 20 * np.sin(0.05*x_array)
plt.plot(x_array, line_1, color='red')
plt.plot(x_array, line_2, color='red')
ax.set_xlim(0, hdu.shape[1])
ax.set_ylim(0, hdu.shape[0])
plt.show() …Run Code Online (Sandbox Code Playgroud)