Python 通过索引在矩阵中赋值
从R开始,我被用来给矩阵赋值 通过使用索引,例如:Python 通过索引在矩阵中赋值,python,arrays,r,numpy,rpy2,Python,Arrays,R,Numpy,Rpy2,从R开始,我被用来给矩阵赋值 通过使用索引,例如: > 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原生NumPy数组,这可能是一
> 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原生NumPy数组,这可能是一个更干净的解决方案。目前,我只是不知道如何使用名称列表创建矩阵/数组,以及如何在之后使用索引赋值
import pandas
matrix = pandas.DataFrame(index=['a','b','c'], columns=['one','two'])
返回
one two
a NaN NaN
b NaN NaN
c NaN NaN
您可以更改条目:
矩阵['one']['a']=1
,以及其他熟悉的numpy操作(如中所述)。您可以使用字典将行/列名映射到索引中
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'))
你是说这是一个字符数组吗?如果没有,请使用
NA
not“NA”
。当然,您是对的,这应该是NAI。我怀疑您需要robjects。在python代码notNA
中使用nau Real
。到目前为止,它工作得很好。使用pandas.dataframe(index=names,columns=names)可以很容易地从其列和行名创建数据框,其中名称指的是python名称列表。@Johannes很高兴您喜欢它,我刚刚开始使用它(昨晚找到了它),所以我不知道您可以这样做!:)
mat.rx(d('A'), d('B'))