python - 在数组元素内执行减法运算后获取多个数组

标签 python python-3.x numpy

import numpy as np
m = []
k = []
a = np.array([[1,2,3,4,5,6],[50,51,52,40,20,30],[60,71,82,90,45,35]])
for i in range(len(a)):
    m.append(a[i, -1:])
    for j in range(len(a[i])-1):
        n = abs(m[i] - a[i,j])
        k.append(n)
    k.append(m[i])
print(k)

k 中的预期输出:

[5,4,3,2,1,6],[20,21,22,10,10,30],[25,36,47,55,10,35]

这也是一个 numpy 数组。

但是我得到的输出是

[array([5]), array([4]), array([3]), array([2]), array([1]), array([6]), array([20]), array([21]), array([22]), array([10]), array([10]), array([30]), array([25]), array([36]), array([47]), array([55]), array([10]), array([35])]

如何解决这种情况?

最佳答案

您想要从每个子数组自身中减去最后一列。为什么不使用矢量化方法?您可以通过从其余项目中减去最后一列,然后将column_stack 与最后一列的未更改版本一起进行一次所有减法。另请注意,您需要更改最后一列的尺寸才能从二维数组中减去。为此,我们可以使用广播。

In [71]: np.column_stack((abs(a[:, :-1] - a[:, None, -1]), a[:,-1]))
Out[71]: 
array([[ 5,  4,  3,  2,  1,  6],
       [20, 21, 22, 10, 10, 30],
       [25, 36, 47, 55, 10, 35]])

关于python - 在数组元素内执行减法运算后获取多个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49647836/

相关文章:

python-3.x - wordnet python-nltk 接口(interface)是否包含任何语义相关性度量?

python - 使用 numpy 计算给定 dd/mm 的星期几(给定 1 月 1 日)

python - 使用 StringVar 的跟踪条目对标签没有影响

python - Django creating duplicate follow relationships--在表中创建新数据时怀疑存在并发问题

python - 使用 python 对 Robot Framework 中的测试套件中的每个测试用例进行测试设置和拆卸

python - Django 模型不可 JSON 序列化

python - 绘图时如何从 jupyter notebook 中显示的 matplotlib 输出行中删除

python - 如何在所有窗口中设置组合框的颜色

python - 使用 matplotlib 绘制具有数千个点的数据及其标签(组)

python - opencv:类型错误:掩码不是数字元组