[英]How can I divide each row in a numpy matrix by the last element of that same row, without using loops?
例如:
a = np.array([[ 0, 1, 1], [2, 4, 2]])
我希望数组“a”中的每一行除以每一行中的最后一个元素,因此 output 如下所示。
array([[0, 1, 1],
[1, 2, 1]])
我想将其应用于更大的数组但具有相同的操作。 我目前正在使用 for 循环执行此操作,该循环花费的时间太长并且找不到等效的 function。
期望的结果可以通过简单的列表理解来实现。
answer = np.array([a[i]/a[i][-1] for i in range(0, len(a))])
它所做的是遍历数组a
的行,并将每一行除以其最后一个元素后获得的数组添加到最终数组中。
除以列数组:
In [69]: a[:,-1]
Out[69]: array([1, 2])
In [70]: a[:,-1][:,None]
Out[70]:
array([[1],
[2]])
In [71]: a/a[:,-1][:,None]
Out[71]:
array([[0., 1., 1.],
[1., 2., 1.]])
通过广播规则,a (3,2) 与 a (1,2) 一起工作
获得正确柱形的替代方法
In [72]: a[:,[-1]]
Out[72]:
array([[1],
[2]])
In [73]: a[:,-1:]
Out[73]:
array([[1],
[2]])
你可以这样进行:
for row in a: # iterate over each row
row //= row[-1] # divide each row by last element
这给了你想要的结果,可以应用于更大的 numpy arrays。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.