我可以使用以下命令从多个数组中获得最低值:

first_arr = np.array([0,1,2])
second_arr = np.array([1,0,3])
third_arr = np.array([3,0,4])
fourth_arr = np.array([1,1,9])

print(np.minimum.reduce([first_arr, second_arr, third_arr, fourth_arr]))

结果= [0 0 2]

但是,如果数组的长度不同或为空,我会得到一个错误:

ValueError: setting an array element with a sequence. The requested array has an inhomogeneous shape after 1 dimensions. The detected shape was (4,) + inhomogeneous part.

数组通常长度不同或为空.我该怎么处理这件事?我想要比较所有存在的元素.

因此,更改上面的示例:

first_arr = np.array([0,1])
second_arr = np.array([1,0,3])
third_arr = np.array([3,0,4])
fourth_arr = np.array([1,1,9])

print(np.minimum.reduce([first_arr, second_arr, third_arr, fourth_arr]))

结果应该是[0 0 3].

推荐答案

If you don't mind the overhead, use 's DataFrame.min:

l = [first_arr, second_arr, third_arr, fourth_arr]

out = pd.DataFrame(l).min().to_numpy()

或使用itertools.zip_longestnumpy.nanmin:

from itertools import zip_longest

l = [first_arr, second_arr, third_arr, fourth_arr]

out = np.nanmin(np.c_[list(zip_longest(*l, fillvalue=np.nan))], axis=1)

输出:array([0., 0., 3.])

Python相关问答推荐

使用unmanagedexports从Python调用的c#DLC

根据多列和一些条件创建新列

如何让pyparparsing匹配1天或2天,但1天和2天失败?

Python panda拆分列保持连续多行

如何销毁框架并使其在tkinter中看起来像以前的样子?

在应用循环中间保存pandas DataFrame

Odoo -无法比较使用@api.depends设置计算字段的日期

Pystata:从Python并行运行stata实例

如何使用Python将工作表从一个Excel工作簿复制粘贴到另一个工作簿?

try 在树叶 map 上应用覆盖磁贴

在Python Attrs包中,如何在field_Transformer函数中添加字段?

Pandas 都是(),但有一个门槛

为什么NumPy的向量化计算在将向量存储为类属性时较慢?'

如何根据一列的值有条件地 Select 前N个组,然后按两列分组?

提取相关行的最快方法—pandas

使用groupby方法移除公共子字符串

Python导入某些库时非法指令(核心转储)(beautifulsoup4."" yfinance)

在嵌套span下的span中擦除信息

为什么常规操作不以其就地对应操作为基础?

导入错误:无法导入名称';操作';