You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将(k,n,m)形NumPy ndarray转为长度k的object数组,元素为(n,m)形数组

有好几种更简洁的实现方式,不需要手动写for循环:

方法1:一行极简实现

直接把数组沿第一维拆解后构造object类型数组即可:

import numpy as np
A = np.arange(2*3*4).reshape(2,3,4)
B = np.array([*A], dtype=object)

输出结果和你原有代码完全一致。

方法2:大数组场景更高效的实现

如果k值非常大,不想生成中间列表占用额外内存,可以直接给预先创建的空object数组批量赋值,两行搞定:

B = np.empty(A.shape[0], dtype=object)
B[:] = list(A)

这里list(A)会自动沿着A的第一个轴迭代,返回每个(n,m)维度的子数组,批量赋值给B的每个位置,等价于你原来的for循环逻辑,底层是NumPy优化过的操作,比手写循环效率更高。

注意避坑

不要直接写np.array(A, dtype=object),这种写法得到的仍然是3维数组,每个元素是object类型的整数,不是你要的每个元素为二维图像数组的1维object数组。

内容的提问来源于stack exchange,提问作者royk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 07:51:00