我习惯于为矩阵分配一个简单的值 通过使用索引如:
> mat <- matrix(NA,2,3)
> mat
[,1] [,2] [,3]
[1,] NA NA NA
[2,] NA NA NA
> mat[1,2] <- 12
> mat
[,1] [,2] [,3]
[1,] NA 12 NA
[2,] NA NA NA
>
现在我必须在Python中运行一些脚本并想要收集 二维矩阵中的值也是如此。矩阵应该有列和rownames 我也希望通过索引访问它们。 到目前为止,我想到了两种方式:
像:
import rpy2.robjects as robjects
names = ['A','B','C']
dimnames = robjects.r['list'](names,names)
mat = robjects.r['matrix'](NA, nrow = len(names), ncol=len(names), dimnames = dimnames)
# and here how to index and assign e.g. the value 12 to the cell mat["A","B"]??
有什么建议吗?
谢谢!
答案 0 :(得分:3)
我认为DataFrame datatype from pandas可能适合你。
import pandas
matrix = pandas.DataFrame(index=['a','b','c'], columns=['one','two'])
返回
one two
a NaN NaN
b NaN NaN
c NaN NaN
您可以更改条目:matrix['one']['a']=1
,以及其他熟悉的numpy操作(如above link中所述)。
答案 1 :(得分:0)
您可以使用字典将行/列名称映射到索引。
names = ['A', 'B', 'C']
idx = range(0, len(names))
d = dict((key, value) for (key, value) in zip(names, idx))
然后用它来访问矩阵中的元素
mat[d['A'], d['B']] = 12
据rpy2
的文件所述,这应该有用;如果没有,
也许以下语法更合适:
mat.rx(d('A'), d('B'))