有没有一种方法可以引用numpy矩阵的列/行号来执行操作?(如果不是,则为数据帧?)



我想将一个函数应用于numpy矩阵的所有元素/单元。这将是一个大的(100k*100k(,所以我想以一种快速的方式完成它。我可以用forloop填充它,但估计需要43天。

我本质上想使用每个元素的行数和列数来执行计算。最后的应用程序有更多的活动部分,但为了说明:下面"X"所在的条目将是2,因为它是第1行和第1列(1+1(。在最后的例子中,我将使用返回的行和列的编号来搜索另一个数据帧中的值,并执行计算,但一旦我理解了下面的内容,这应该很容易。

如果使用numpy矩阵无法做到这一点,我可以使用df来实现,然后将其转换为numpy数组。但我认为这会更慢。

因此,在下面,我希望每个"单元格"通过引用其行和列#来计算一些东西

rows   c1   c2  c3
0      0    0    0
1      0    X    0
2      0    0    0

非常感谢!x

后期编辑:

所以我有一个像这样的numpy数组/矩阵。零只是占位符,我用"X"指代哪个单元格是任意的。

rows   c1   c2  c3
0      0    0    0
1      0    X    0
2      0    0    0

然后我有这个数据帧如下


attribute 1
0   a
1   b
2   c
3   d

例如,我想在每个"单元格"中放置一个操作,它根据自己位置提供的参数查找数据帧。例如,这个X的位置是第1行第1列,所以它的参数是[1,1],所以它在数据帧中查找索引两次,并返回属性"bb"的串联。主要是"单元格"中的公式引用了它自己的位置。

例如,在下面的数组中,标记为"y"的位置将返回"bc"。

rows   c1   c2  c3
0      0    0    0
1      0    X    Y
2      0    0    0

我是个新手,希望我能解释清楚

所以我要尝试一下,说你正在寻找这样的东西:

x = 5 # or whatever n by n size you want for your matrix
arr = np.arange(0, x, 1)
vec = arr[:, np.newaxis]
vec + vec.transpose()

这将生成以下矩阵:

array([0, 1, 2, 3, 4],
[1, 2, 3, 4, 5],
[2, 3, 4, 5, 6],
[3, 4, 5, 6, 7],
[4, 5, 6, 7, 8]])

这就是您要查找的CCD_ 1索引和。如果您想从1开始,那么您只需更改np.arange中的0即可。

最新更新