Python 带numpy数组的列表形状
我用Python创建了一个NPython 带numpy数组的列表形状,python,arrays,list,numpy,Python,Arrays,List,Numpy,我用Python创建了一个Nnumpy数组的列表,每个数组的大小都是D乘以p。当我调用numpy.shape(我的列表)时,我会返回元组(N,D,p)。当我附加到列表中的数组大小不相同时(或者如果我附加的项目不是数组),numpy.shape会抛出错误 如果我想要列表中每个数组的形状,我必须求助于列表理解还是有更快的方法 numpy是否只是在列表中迭代,检查以确保每个元素都是一个与前一个元素大小相同的数组,并据此决定是返回元组还是抛出错误 如果我想要列表中每个数组的形状,我必须求助于列表理解还是
numpy
数组的列表,每个数组的大小都是D乘以p。当我调用numpy.shape(我的列表)
时,我会返回元组(N,D,p)
。当我附加到列表中的数组大小不相同时(或者如果我附加的项目不是数组),numpy.shape
会抛出错误
numpy
是否只是在列表中迭代,检查以确保每个元素都是一个与前一个元素大小相同的数组,并据此决定是返回元组还是抛出错误,构建一个完整的阵列以获得形状。(这不是任何人都费心去优化的。)1)是的,2)可能列表不是numpy数据类型。没有“numpy”的迭代方式,所以列表理解是唯一的选择。调用
numpy.shape(我的列表)
时,将隐式创建一个数组数组。要使此操作成功,列表上的所有数组都必须具有相同的形状。请注意,my_list.shape
会给您一个错误。正是函数形式试图将列表转换为数组。map(np.shape,list\u of_array)
不是比列表理解快吗?@kmario23:可能要快一些,但在运行时这两种方法都非常接近,这两种方法都不会使此操作成为性能瓶颈。另外,直接访问shape
属性要比使用np.shape
更快,而使用map
无法做到这一点。(直接访问shape属性将是[arr.shape for arr in my_list]
)是的。在运行一些测试后发现。顺便说一句,我为map
提供了一个自定义python函数,该函数利用了arr.shape
并发现它比列表理解慢2倍。但是,如果一个人只需要一个iterable,而不是整个列表本身,那么map
就是一条出路。