我在这里查看了文档和其他问题,但似乎我还没有掌握numpy数组中的子集.
我有一个numpy数组,为了参数,让它定义如下:
import numpy as np
a = np.arange(100)
a.shape = (10,10)
# array([[ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
# [10, 11, 12, 13, 14, 15, 16, 17, 18, 19],
# [20, 21, 22, 23, 24, 25, 26, 27, 28, 29],
# [30, 31, 32, 33, 34, 35, 36, 37, 38, 39],
# [40, 41, 42, 43, 44, 45, 46, 47, 48, 49],
# [50, 51, 52, 53, 54, 55, 56, 57, 58, 59],
# …Run Code Online (Sandbox Code Playgroud) 如何轻松检查一个ArrayList中的所有元素是否都是另一个ArrayList的元素?
我无法找出正确的方式来定义的[,$和[[子集运营商的S4类.
任何人都可以为我提供一个为S4类定义这三个的基本示例吗?
我有一个名为的数据集EPL2011_12.我想通过按日期对原始进行子集来制作新的数据集.日期位于名为Date "日期为DD-MM-YY"格式的列中.
我试过了
EPL2011_12FirstHalf <- subset(EPL2011_12, Date > 13-01-12)
Run Code Online (Sandbox Code Playgroud)
和
EPL2011_12FirstHalf <- subset(EPL2011_12, Date > "13-01-12")
Run Code Online (Sandbox Code Playgroud)
但每次都会收到此错误消息.
Run Code Online (Sandbox Code Playgroud)Warning message: In Ops.factor(Date, 13- 1 - 12) : > not meaningful for factors
我想这意味着R正在处理文本而不是数字,为什么它不起作用?
为什么不subset()兼容&&两个条件的逻辑和运算符?
> subset(tt, (customer_id==177 && visit_date=="2010-08-26"))
<0 rows> (or 0-length row.names)
Run Code Online (Sandbox Code Playgroud)
但它们各自独立工作:
> subset(tt, customer_id==177)
> subset(tt, visit_date=="2010-08-26")
Run Code Online (Sandbox Code Playgroud)
(想避免使用大型临时变量 - 我的数据集很大)
我想data.table使用一个变量来子集a ,该变量与导致某些问题的列具有相同的名称:
dt <- data.table(a=sample(c('a', 'b', 'c'), 20, replace=TRUE),
b=sample(c('a', 'b', 'c'), 20, replace=TRUE),
c=sample(20), key=c('a', 'b'))
evn <- environment()
a <- 'b'
dt[a == a]
#Expected Result
dt[a == 'b']
Run Code Online (Sandbox Code Playgroud)
我遇到了这个可能的解决方案:
env <- environment()
dt[a == get('a',env)]
Run Code Online (Sandbox Code Playgroud)
但它是如此不利:
this.a = a
dt[a == this.a]
Run Code Online (Sandbox Code Playgroud)
还有另一个优雅的解决方案吗?
我正在尝试对数据帧进行子集化,其中我基于多个列值获得多个数据帧.这是我的例子
>df
v1 v2 v3 v4 v5
A Z 1 10 12
D Y 10 12 8
E X 2 12 15
A Z 1 10 12
E X 2 14 16
Run Code Online (Sandbox Code Playgroud)
预期的输出是这样的,我将这个数据帧拆分为基于列v1和的多个数据帧v2
>df1
v3 v4 v5
1 10 12
1 10 12
>df2
v3 v4 v5
10 12 8
>df3
v3 v4 v5
2 12 15
2 14 16
Run Code Online (Sandbox Code Playgroud)
我已经编写了一个现在正在运行的代码,但不认为这是最好的方法.必须有更好的方法来做到这一点.假设tabdata.frame具有初始数据.这是我的代码:
v1Factors<-levels(factor(tab$v1))
v2Factors<-levels(factor(tab$v2))
for(i in 1:length(v1Factors)){
for(j in 1:length(v2Factors)){
subsetTab<-subset(tab, v1==v1Factors[i] & v2==v2Factors[j], select=c("v3", "v4", …Run Code Online (Sandbox Code Playgroud) 我们希望在行和列上对文本文件进行子集化,其中从文件中读取行和列编号.排除标题(第1行)和rownames(第1列).
inputFile.txt制表符分隔的文本文件
header 62 9 3 54 6 1
25 1 2 3 4 5 6
96 1 1 1 1 0 1
72 3 3 3 3 3 3
18 0 1 0 1 1 0
82 1 0 0 0 0 1
77 1 0 1 0 1 1
15 7 7 7 7 7 7
82 0 0 1 1 1 0
37 0 1 0 0 1 0
18 0 1 0 0 1 0 …Run Code Online (Sandbox Code Playgroud) 我正在研究一个难题,包括分析所有大小的k子集并找出哪一个是最优的.我写了一个解决方案,当子集的数量很少时可以工作,但是对于更大的问题,它会耗尽内存.现在我正在尝试将用python编写的迭代函数转换为java,以便我可以在创建时分析每个子集,只获得表示它是如何优化的值,而不是整个集合,这样我就不会用完记忆.到目前为止,这是我所拥有的,即使是非常小的问题,它似乎也没有完成:
public static LinkedList<LinkedList<Integer>> getSets(int k, LinkedList<Integer> set)
{
int N = set.size();
int maxsets = nCr(N, k);
LinkedList<LinkedList<Integer>> toRet = new LinkedList<LinkedList<Integer>>();
int remains, thresh;
LinkedList<Integer> newset;
for (int i=0; i<maxsets; i++)
{
remains = k;
newset = new LinkedList<Integer>();
for (int val=1; val<=N; val++)
{
if (remains==0)
break;
thresh = nCr(N-val, remains-1);
if (i < thresh)
{
newset.add(set.get(val-1));
remains --;
}
else
{
i -= thresh;
}
}
toRet.add(newset);
}
return toRet;
}
Run Code Online (Sandbox Code Playgroud)
任何人都可以帮我调试这个函数或建议另一个迭代生成大小k子集的算法吗?
编辑:我终于使这个功能工作,我不得不创建一个新的变量,与我做的相同,我和thresh比较,因为python处理循环索引不同.
如何避免使用循环根据多个因子级别对数据帧进行子集化?
在以下示例中,我想要的输出是数据帧.数据框应包含原始数据帧的行,其中"Code"中的值等于"selected"中的值之一.
工作范例:
#sample data
Code<-c("A","B","C","D","C","D","A","A")
Value<-c(1, 2, 3, 4, 1, 2, 3, 4)
data<-data.frame(cbind(Code, Value))
selected<-c("A","B") #want rows that contain A and B
#Begin subsetting
result<-data[which(data$Code==selected[1]),]
s1<-2
while(s1<length(selected)+1)
{
result<-rbind(result,data[which(data$Code==selected[s1]),])
s1<-s1+1
}
Run Code Online (Sandbox Code Playgroud)
这是一个更大的数据集的玩具示例,因此"选中"可能包含大量元素,而数据包含大量行.因此我想避免循环.