python - NumPy 为每个子张量沿轴指定函数应用?
问题描述
假设有一个A
形状矩阵(N, M)
和一些dtype
. 然后,有一个shape的numpy
函数向量。因为它可能很重要,对于我的具体情况,以千为单位(例如 4000)和以单位为单位(例如 9)的范围。B
(N, )
N
M
示例 ( N=5
, M=3
):
A =
[
[0.1, 0.2, 0.3],
[4.02, 123.4, 534.65],
[2.32, 22.0, 754.01],
[5.41, 23.1, 1245.5],
[6.07, 0.65, 22.12],
]
B = [
np.min,
np.max,
np.argmin,
np.argmin,
np.min
]
B[i]
将始终是np.min
,np.max
或.np.argmin
np.argmax
我想对 执行操作axis=1
,特别是B[i]
对执行操作A[i, :]
,产生以下输出:
[ 0.1, 534.65, 0, 0, 0.65 ]
在 NumPy 中可以实现这样的事情吗?
一种可能的解决方案是A
根据 上的等价组进行拆分B
,沿 应用单个操作axis=1
,重新索引组并将它们合并回来,但这听起来非常低效。如果可能的话,我想避免这种情况。
如果我的提议对你来说听起来很荒谬,请告诉我。
解决方案
为什么这对您来说不可行?:
A = np.array(A) # A originally is what you have given
B = [...] # what you have given
for i in range(len(B)):
print( np.apply_along_axis(B[i], 0, A[i,:]) )
注意:它比B[i](A[i,:])
递归更快。检查此链接(这是numpy
文档)
推荐阅读
- python - 为什么多处理中的池类没有优于线性处理
- javascript - 如何使用 React 钩子回调嵌套函数内的函数
- python - Linux。连接到 Oracle。cx_Oracle.DatabaseError:DPI-1047 找不到 64 位 Oracle 客户端库:“libclntsh.so
- redis - 如何在不同的机器上创建 Redis 集群?
- r - 使用 %in% 对 data.table 进行子集化
- mongodb - 从 mongo 中检索深度嵌套的值
- react-native - react-native 从 uri 文件中获取数据
- sql - 如何插入行作为记录类型“标题”,数据收集标识符为 YYYY/N,行数并将此行作为 END HEADER 标记关闭
- azure - 如何在 Azure 自动化帐户 Python Runbook 或 Powershell Runbook 中运行 Azure CLI 命令
- css - 在小屏幕上没有得到正确的尺寸