【发布时间】:2020-08-20 03:15:04
【问题描述】:
我正在尝试通过 python3 对 numpy 数组进行一些计算。
数组:
c0 c1 c2 c3
r0 1 5 2 7
r1 3 9 4 6
r2 8 2 1 3
这里的“cx”和“rx”是列名和行名。
如果元素不在给定的列列表中,我需要逐行计算每个元素的差异。
例如
given a column list [0, 2, 1] # they are column indices
which means that
for r0, we need to calculate the difference between the c0 and all other columns, so we have
[1, 5-1, 2-1, 7-1]
for r1, we need to calculate the difference between the c2 and all other columns, so we have
[3-4, 9-4, 4, 6-4]
for r2, we need to calculate the difference between the c1 and all other columns, so we have
[8-2, 2, 1-2, 3-2]
所以,结果应该是
1 4 1 6
-1 5 4 2
6 2 -1 1
由于数组可能非常大,我想通过 numpy 矢量化操作进行计算,例如广播。
但是,我不确定如何有效地做到这一点。
我已经检查了Vectorizing operation on numpy array、Vectorizing a Numpy slice operation、Vectorize large NumPy multiplication、Replace For Loop with Numpy Vectorized Operation、Vectorize numpy array for loop。
但是,它们都不适合我。
感谢您的帮助!
【问题讨论】:
标签: python arrays numpy vectorization