如何通过C ++中的数据获得向量的索引
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何通过C ++中的数据获得向量的索引相关的知识,希望对你有一定的参考价值。
参考技术A n维矩阵有两个下标,n维向量只能提供一个下标。当然你可以采用单下标访问方式。比如A(a)显示的结果是A矩阵的第1,3,4……个元素;
而A(1,a)显示的是A(1,1),A(1,3),A(1,4)……的结果。
Matlab中数组元素引用有三种方法:
1.下标法(subscripts)
2.索引法(index)
3.布尔法(Boolean)
在使用这三种方法之前,大家头脑一定要清晰的记住,Matlab中数组元素是按列存储(与Fortran一样),比如说下面的二维数组
如何有效地过滤由两列groupby操作获得的数据帧,以仅包含第二个索引的最大值和最小值?
我有一个数据框df
,它是通过执行两列groupby操作获得的:
df = data.groupby(['letters', 'syllables']).size()
这是df
的前11行的输出:
0
letters syllables
1 1 25
3 1
2 1 188
2 44
3 1
4 1
3 1 1304
2 189
3 89
4 2
5 3
我想过滤df
,以便对于letters
中的每个索引,只显示syllables
的最大和最小索引,给出以下输出:
0
letters syllables
1 1 25
3 1
2 1 188
4 1
3 1 1304
5 3
更好的方法是创建一个这样的数据框:
0
letters statistic syllables
1 min 1 25
max 3 1
2 min 1 188
max 4 1
3 min 1 1304
max 5 3
完整数据帧有120行。我知道我可以通过循环来做到这一点,但我想更好地理解pandas操作,并想知道如何更有效地做到这一点。
上面的示例数据可以使用以下命令从csv文件导入到多级索引数据框中:
df = pd.read_csv('data.csv', index_col=[0,1])
编辑:这是Erfan建议的代码输出:
df = data.groupby(['letters', 'syllables']).agg({'letters' : 'size', 'syllables' : ['min', 'max']})
输出:
letters syllables
size min max
letters syllables
1 1 25 1 1
3 1 3 3
2 1 188 1 1
2 44 2 2
3 1 3 3
4 1 4 4
3 1 1304 1 1
2 189 2 2
3 89 3 3
4 2 4 4
5 3 5 5
答案
你可以单独做,然后concat
回来
s=data.groupby(['letters', 'syllables']).size().sort_values(0)
yourdf=pd.concat([s.groupby(level=0).head(1),s.groupby(level=0).tail(1)],keys=['min','max']).swaplevel(i=0,j=1).sort_index()
以上是关于如何通过C ++中的数据获得向量的索引的主要内容,如果未能解决你的问题,请参考以下文章
如何将字节数据从套接字写入 C 中的无符号字符向量? [关闭]
如何有效地过滤由两列groupby操作获得的数据帧,以仅包含第二个索引的最大值和最小值?
如何通过另一个具有位置(索引)的垫子访问opencv中的矩阵数据