我一直在尝试在Stata中处理矩阵,但如果不感到困惑,我会发现这很困难。
在import java.io.*;
class DataM
{
public static void main(String[] args)throws IOException {
BufferedReader br=new BufferedReader(new FileReader("abc.txt"));
BufferedReader br1=new BufferedReader(new FileReader("def.txt"));
String line=br.readLine();
while(line!=null)
{
System.out.println(line);
line=br.readLine();
}
System.out.println("****************************************************************************");
String line2=br1.readLine();
while(line2!=null)
{
System.out.println(line2);
line2=br1.readLine();
}
//PrintWriter pw=new PrintWriter();
PrintWriter pw=new PrintWriter("ilm.txt");
pw.println(br);
pw.println(br1);
pw.println();
pw.flush();
pw.close();
}
}
中,我可以这样做:
NumPy
可以在Stata中完成类似的事情吗?
答案 0 :(得分:3)
处理矩阵时,最好使用mata
。
这是Stata的矩阵语言,具有更大的灵活性。但是,您需要记住,在Stata中,矩阵子脚本的工作方式不同,因为索引从1
开始而不是0
。另外,与NumPy
相比,Stata不支持否定下标或步进运算符。
要获得所需的内容,您需要使用某些functions:
mata: A = (1..6 \ 7..12 \ 13..18 \ 19..24 \ 25..30 \ 31..36)
mata: A
1 2 3 4 5 6
+-------------------------------+
1 | 1 2 3 4 5 6 |
2 | 7 8 9 10 11 12 |
3 | 13 14 15 16 17 18 |
4 | 19 20 21 22 23 24 |
5 | 25 26 27 28 29 30 |
6 | 31 32 33 34 35 36 |
+-------------------------------+
mata: B = A[3, cols(A)-2]
mata: B
16
选择行:
mata: B = select(A, mod(1::rows(A), 2))
mata: B
1 2 3 4 5 6
+-------------------------------+
1 | 1 2 3 4 5 6 |
2 | 13 14 15 16 17 18 |
3 | 25 26 27 28 29 30 |
+-------------------------------+
mata: B = select(A, !mod(1::rows(A), 2))
mata: B
1 2 3 4 5 6
+-------------------------------+
1 | 7 8 9 10 11 12 |
2 | 19 20 21 22 23 24 |
3 | 31 32 33 34 35 36 |
+-------------------------------+
选择列:
mata: B = select(A, mod(1..cols(A), 2))
mata: B
1 2 3
+----------------+
1 | 1 3 5 |
2 | 7 9 11 |
3 | 13 15 17 |
4 | 19 21 23 |
5 | 25 27 29 |
6 | 31 33 35 |
+----------------+
mata: B = select(A, !mod(1..cols(A), 2))
mata: B
1 2 3
+----------------+
1 | 2 4 6 |
2 | 8 10 12 |
3 | 14 16 18 |
4 | 20 22 24 |
5 | 26 28 30 |
6 | 32 34 36 |
+----------------+
您将必须更深入地研究Stata和mata
中的矩阵。
在Stata的命令提示符下键入help matrix
和help mata
,以获取详细信息。