Python:除数组

时间:2015-11-24 14:29:23

标签: python arrays python-2.7

假设我有这样的数组:

 d= [[1.254,3.458,9.874][5.32,3.35,4.54][1.121,8.121,9.45][7.1215,9.454,8.14].... and etc.]

如何将d [0] [2]元素除以d [0] [2],d [1] [2],d [2] [2],d [3] [2] ... .... 等等? 我将使用数字解释它:

  9.874(d[0] [2])/9.874(d[0] [2])
  9.874(d[0] [2])/4.45(d[1] [2]) 
  9.874(d[0] [2])/9.45(d[2] [2])
  9.874(d[0] [2])/8.14(d[3] [2]) ........ and etc.

我希望我的结果是数组:

  Result  = [1,2.21,1.04,1.21,... and etc.] 

或者(如果它更容易)结果可以添加到当前数组:

  d= [[1.254,3.458,9.874,1][5.32,3.35,4.54,2.21][1.121,8.121,9.45,1.04][7.1215,9.454,8.14,1.21].... and etc.]

如您所见,result是数组元素的最后一个数组:

  d[0] [3] = 1, d[1] [3] = 2.21, d[2] [3]=1.04, d[3] [3]=1.21

如果有人需要更多解释,请在评论部分写一下不要添加-1 :(

4 个答案:

答案 0 :(得分:3)

这适用于您的示例:

result = [d[0][2]/dx[2] for dx in d]

答案 1 :(得分:0)

如果您只想要每个内部列表的最后一个元素,那么

d= [[1.254,3.458,9.874,1],[5.32,3.35,4.54,2.21],[1.121,8.121,9.45,1.04],[7.1215,9.454,8.14,1.21]]

for i in d: print i[-1]

1
2.21
1.04
1.21

如果您想将其作为列表,则可以使用列表理解

l = [i[-1] for i in d]
print l

[1, 2.21, 1.04, 1.21]

答案 2 :(得分:0)

如果你正在使用Numpy,你可以在你的数组中添加一个列,并用你的部门的结果填充它:

1: a = np.array([[1.254,3.458,9.874],[5.32,3.35,4.54][1.121,8.121,9.45],[7.1215,9.454,8.14]])
2: b =np.hstack((a, np.zeros((a.shape[0],1))))
3: b[:,3] = b[0,2]/b[:,2]
4: b
array([[ 1.254     ,  3.458     ,  9.874     ,  1.        ],
   [ 5.32      ,  3.35      ,  4.54      ,  2.17488987],
   [ 1.121     ,  8.121     ,  9.45      ,  1.04486772],
   [ 7.1215    ,  9.454     ,  8.14      ,  1.21302211]])

答案 3 :(得分:0)

更简单的是计算列表理解(@elzell提出的解决方案)result = [d[0][2]/dx[2] for dx in d]

您还可以将结果添加为每个子列表的最后一个元素(numpy中的数组是不同的动物)

for dx in d:
    dx.append(d[0][2]/dx[2])