从多个其他列中减去一列

时间:2014-02-26 19:48:36

标签: python arrays matrix subtraction

我有一个包含7列的数组,我试图从所有其他列中减去第一列。现在我的代码看起来像这样:

a  = (q[:,0]-q[:,1])**2
a1 = (q[:,0]-q[:,2])**2
a2 = (q[:,0]-q[:,3])**2
a3 = (q[:,0]-q[:,4])**2
a4 = (q[:,0]-q[:,5])**2
a5 = (q[:,0]-q[:,6])**2

除了我正在尝试为许多文件执行此操作之外,这种方法很有效,而且效率非常低。是否有更有效的方法来编写相同的代码?

由于

1 个答案:

答案 0 :(得分:1)

如果你想从所有其他列中减去第一列,你可以

import numpy as np
x = np.arange(40).reshape(8, 5) #sample data
y = (x - x[:,0,None])**2

x[:,0,None]代表第一列。如果您只是尝试x - x[:,0],numpy不能将形状一起广播(在这种情况下为(8,5)和(8))。添加x[:,0,None](或x[:,0,np.newaxis])使第二个形状(8,1)和numpy可以将两者一起广播。