python - 多个numpy数组的最大值
问题描述
我们可以计算 3 个 numpy 数组的元素最大值:
import numpy as np
A = np.arange(20).reshape((4, 5)) # any 4x5 array
B = np.maximum(A, A+7, A+2) # working
但是为什么不np.maximum
接受来自“解包”的多个数组呢?
L = [np.roll(A, k, axis=0) for k in range(4)] # 4 arrays: A shifted with different k
np.maximum(*L)
错误:
ValueError:参数数量无效
毕竟,L
Numpy 数组对象是一个 Python 列表,所以*L
应该为np.maximum
函数调用解包它。为什么它不起作用?
PS:我也尝试过L = (...)
(它提供了一个生成器)或L = tuple(...)
,但我们有同样的错误。
解决方案
正如评论中指出的,reduce
这里的解决方案是:
np.maximum.reduce([np.roll(A, k, axis=0) for k in range(4)])
推荐阅读
- java - 即使存在值,也无法单独从 Redis 加载值
- quickbooks - 各站点的 QODBC 程序集库存
- node.js - Azure Node.js Linux 应用服务 Microsoft.AspNetCore.Server.Kestrel.Core.BadHttpRequestException:请求正文太大
- python - 为什么 queryset[0] 和 queryset.first() 返回不同的记录?
- c++ - C++ 程序如何为插入 (<<) 运算符选择正确的函数?
- vue.js - Vuex 对象在 Vue 组件中显示为 Null
- c# - 如何在 dotnet core 中为 HttpClient 指定 HTTP/2“先验知识”模式?
- json - Swift JSON 撇号'字符串在 Web 服务器上被奇怪地解释
- pandas - 将文件夹中的 *random* csv 文件导入 pandas
- google-api - Google Indexing API - 权限被拒绝。无法验证 URL 所有权