python - 对 numpy 数组的操作包含不同大小的行

标签 python arrays numpy

我有两个列表,如下所示:

a= [[1,2,3,4], [2,3,4,5],[3,4,5,6,7]], b= [[5,6,7,8], [9,1,2,3], [4,5,6,7,8]]

对于这样的输出,我想逐个元素地减去:

a-b= [[-4,-4,-4,-4],[7,2,2,2],[-1,-1,-1,-1,-1]]

为了做到这一点,我将每个 ab 转换为数组并减去它们,我使用:

np.array(a)-np.array(b)

输出只是给我错误:

Unsupported Operand type for-: 'list' and 'list'

我做错了什么? np.array 命令不应该确保转换为数组吗?

最佳答案

这是一种 Numpythonic 方式:

>>> y = map(len, a)  
>>> a = np.hstack(np.array(a))
>>> b = np.hstack(np.array(b))
>>> np.split(a-b, np.cumsum(y))
[array([-4, -4, -4, -4]), array([-7,  2,  2,  2]), array([-1, -1, -1, -1, -1]), array([], dtype=float64)]
>>> 

由于您不能减去具有不同形状的数组,您可以使用 np.hstack() 展平您的阵列,然后减去展平的阵列,然后根据之前的形状重新整形。

关于python - 对 numpy 数组的操作包含不同大小的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38894291/

相关文章:

Python for 和 if 在一行

c - C 中的多线程处理结构体数组

javascript - 最小-最大总和 - 输出错误

python - 仅在 numpy 中打印真正的根

python - 包含大量数据的散点图

python - 从 google-app-engine ndb 中删除日期时间早于 N 秒的实体

python - 使用通配符的复杂和自定义 SQL 连接条件

python - 如何在 Python 中使用自定义消息引发相同的异常?

java - Java中的getView和Beacon(Estimote)问题

python - 根据python中另一个列表的最大值对数组的列索引进行分组