提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供 中文繁体 英文版本 中英对照 版本,有任何建议请联系yoyou2525@163.com。
如何通过分组变量拆分2D数组,并请返回数组列表(顺序也很重要)。
为了显示预期的结果,可以用
> (A = matrix(c("a", "b", "a", "c", "b", "d"), nr=3, byrow=TRUE)) # input
[,1] [,2]
[1,] "a" "b"
[2,] "a" "c"
[3,] "b" "d"
> (split.data.frame(A, A[,1])) # output
$a
[,1] [,2]
[1,] "a" "b"
[2,] "a" "c"
$b
[,1] [,2]
[1,] "b" "d"
编辑:澄清一下:我想根据第一列中的唯一值将数组/矩阵A
拆分为多个数组的列表。 即,分割A
成一个阵列,其中所述第一柱具有a
,而另一个阵列,其中所述第一柱具有b
。
我已经尝试过将Python等效于R“ split”功能,但这给出了三个数组
import numpy as np
import itertools
A = np.array([["a", "b"], ["a", "c"], ["b", "d"]])
b = a[:,0]
def split(x, f):
return list(itertools.compress(x, f)), list(itertools.compress(x, (not i for i in f)))
split(A, b)
([array(['a', 'b'], dtype='<U1'),
array(['a', 'c'], dtype='<U1'),
array(['b', 'd'], dtype='<U1')],
[])
还有numpy.split
,使用np.split(A, b)
,但是需要整数。 我虽然可以使用如何在Python中将字符串转换为整数? 将字母转换为整数,但是即使我传递整数,也不会按预期拆分
c = np.transpose(np.array([1,1,2]))
np.split(A, c) # returns 4 arrays
能做到吗? 谢谢
编辑:请注意,这是一个小例子,并且组的数量可能大于两个,并且可能未订购。
import pandas as pd
import numpy as np
a = np.array([["a", "b"], ["a", "c"], ["b", "d"]])
listofdfs = {}
for n,g in pd.DataFrame(a).groupby(0):
listofdfs[n] = g
listofdfs['a'].values
输出:
array([['a', 'b'],
['a', 'c']], dtype=object)
和,
listofdfs['b'].values
输出:
array([['b', 'd']], dtype=object)
import numpy as np
from itertools import groupby
l = [np.stack(list(g)) for k, g in groupby(a, lambda x: x[0])]
l[0]
输出:
array([['a', 'b'],
['a', 'c']], dtype='<U1')
和,
l[1]
输出:
array([['b', 'd']], dtype='<U1')
如果我理解您的问题,可以进行简单的切片,如下所示:
a = np.array([["a", "b"], ["a", "c"], ["b", "d"]])
x,y=a[:2,:],a[2,:]
x
array([['a', 'b'],
['a', 'c']], dtype='<U1')
y
array(['b', 'd'], dtype='<U1')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.