我有一个包含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
除了我正在尝试为许多文件执行此操作之外,这种方法很有效,而且效率非常低。是否有更有效的方法来编写相同的代码?
由于
答案 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可以将两者一起广播。