草庐IT

python - 使用不在索引中的元素切片 Pandas 系列

我有一个由元组索引的pandas系列,如下所示:frompandasimportSeriess=Series({(0,0):1,(0,1):2,(0,3):3,(1,0):1,(1,2):4,(3,0):5})我想通过使用也是元组的索引(使用字典顺序)对这样的系列进行切片,但不一定在索引中。当我传递系列中的索引时,切片似乎起作用了:s[:(1,0)](0,0)1(0,1)2(0,3)3(1,0)1dtype:int64但如果我尝试按不在系列中的索引进行切片,则会出现错误:s[:(1,1)]...ValueError:Index(...)mustbecalledwithacollecti

python - numpy 中数组末尾的零填充切片

在numpy中,如果我在数组末尾进行切片,是否有办法将填充条目置零,这样我得到的东西就是所需切片的大小?例如,>>>x=np.ones((3,3,))>>>xarray([[1.,1.,1.],[1.,1.,1.],[1.,1.,1.]])>>>x[1:4,1:4]#wouldbehaveasx[1:3,1:3]bydefaultarray([[1.,1.,0.],[1.,1.,0.],[0.,0.,0.]])>>>x[-1:2,-1:2]array([[0.,0.,0.],[0.,1.,1.],[0.,1.,1.]])在视觉上,我希望越界区域用零填充:我正在处理图像,并希望使用零填充

python - 将 Pandas DataFrame 切片为新的 DataFrame

我想用bool索引对DataFrame进行切片以获得副本,然后独立于原始DataFrame在该副本上执行操作。由此看来answer,使用bool数组选择.loc将返回给我一个副本,但是,如果我尝试更改副本,SettingWithCopyWarning会妨碍。这是否是正确的方法:importnumpyasnpimportpandasaspdd1=pd.DataFrame(np.random.randn(10,5),columns=['a','b','c','d','e'])#createanewdataframefromtheslicedcopyd2=pd.DataFrame(d1.lo

python - 如何对 numpy 数组进行切片以获取第一行和最后两行

据我所知,它没有包含在indexing,slicinganditerating中scipy教程,所以让我在这里问:说我有x=np.array([[1,2],[3,4],[5,6],[7,8],[9,0]])x:array([[1,2],[3,4],[5,6],[7,8],[9,0]])如何对数组进行切片以获取第一行和最后一行:y:array([[1,2],[3,4],[7,8],[9,0]]) 最佳答案 我不知道是否有巧妙的方法可以做到这一点。当然,您可以明确列出索引:>>>x[[0,1,-2,-1]]array([[1,2],[3

python - 重复切片字符串

重复切片适用于元组和列表:>>>tuple=("nav","yad")>>>tuple[0]'nav'>>>tuple[0][0]'n'但是对于字符串:>>>name="university">>>name[0]'u'奇怪的是,当我尝试对字符串名称变量进行重复切片时,name[0][0]orname[0][-1]什么都没有,为什么显示"u"?>>>name[0][0]'u'>>>name[0][-1]'u'如果有东西在name[0][0]那么为什么不在其他索引上呢?>>>name[0][1]Traceback(mostrecentcalllast):File"",line1,inInd

python - 索引是否使 Pandas 数据帧切片更快?

我有一个包含超过百万条记录的Pandas数据框。其中一列是日期时间。我的数据样本如下:time,x,y,z2015-05-0110:00:00,111,222,3332015-05-0110:00:03,112,223,334...我需要有效获取特定时间段内的记录。下面这种幼稚的方式非常耗时。new_df=df[(df["time"]>start_time)&(df["time"]我知道在像MySQL这样的DBMS上,按时间字段进行索引对于通过指定时间段获取记录是有效的。我的问题是df.index=df.time等pandas的索引是否使切片过程更快?如果Q1的答案是“否”,那么pan

python - Numpy 多维数组切片

假设我定义了一个3x3x3的numpy数组x=numpy.arange(27).reshape((3,3,3))现在,我可以用x[:,0,1]得到一个包含每个3x3子数组的(0,1)元素的数组,它返回array([1,10,19])。如果我有一个元组(m,n)并想检索存储在元组中的每个子数组(0,1)的(m,n)元素怎么办?例如,假设我有t=(0,1)。我试过x[:,t],但它没有正确的行为-它返回每个子数组的第0行和第1行。我找到的最简单的解决方案是x.transpose()[tuple(reversed(t))].transpose()但我相信一定有更好的方法。当然,在这种情况下,

python - 切片索引限制为 0x7FFFFFFF

我正在玩Python(2.7.4)中的切片:classFoo():def__getitem__(self,key):#Singlevalueifisinstance(key,(int,long)):returnkey#Sliceifisinstance(key,slice):print'key.start=0x{0:X}key.stop=0x{1:X}'.format(key.start,key.stop)length=key.stop-key.startreturnstr(length)一切似乎都按预期工作:>>>f=Foo()>>>>>>f[42]42>>>>>>f[20:30]k

python - 使用索引列表切片 n 维 numpy 数组

假设我有一个3维numpy数组:np.random.seed(1145)A=np.random.random((5,5,5))我有两个索引列表,对应于第2维和第3维:second=[1,2]third=[3,4]并且我想选取numpy数组中对应的元素A[:][second][third]所以切片数组的形状将是(5,2,2)和A[:][second][third].flatten()相当于:In[226]:foriinrange(5):forjinsecond:forkinthird:printA[i][j][k]0.5560910741290.6220162496510.6225305

Python Pandas 按二级索引(或任何其他级别)切片多索引

有很多关于将多索引的级别[0]按级别范围切片的帖子1.但是,我找不到解决问题的方法;也就是说,我需要一个级别的范围1level[0]索引值的索引dataframe:首先是A到Z,Rank是1到400;我需要每个级别[0](第一)的前2个和后2个,但不在同一步骤中。TitleScoreFirstRankA1foo1002bar903lime804lame70B1foo4002lime3003lame2004dime100我正在尝试获取每个级别的最后2行1使用以下代码进行索引,但它仅针对第一级[0]值进行正确切片。[IN]df.ix[x.index.levels[1][-2]:][OUT]