我想扩展两个表的维度,这样我就可以在它们上使用numpy的广播乘法。我使用了以下代码:
def tableResize(table1,table2,var1,var2):
n1=[1]*len(var1)
n2=[1]*len(var2)
table1.resize(list(table1.shape)+n2)
table2.resize(n1+list(table2.shape))
return table1,table2
假设表1是2*3,表2是3*4,展开的表将是2*3*1*1和1*1*3*4。 虽然我注意到我会写字
^{pr2}$这不会对表1和表2本身产生任何影响。但是我不知道如何自动生成列表[:,:,np.newaxis,np.newaxis]
。在
但是,resize方法没有返回值,它将修改对象本身。我不想用深拷贝。有人有主意吗?非常感谢^
a1 = a.reshape(...)
返回视图-a1
具有新形状,但共享数据缓冲区。在{start}不需要在cd3}处展开,{。在
^{pr2}$看看
np.atleast_3d
和np.broadcast_arrays
,了解如何扩展数组的维数。在进一步看一下
resize
,我想说,无论是哪种形式,当您只想添加单例维度时,它都是使用错误的函数。reshape
是正确的函数/方法。或者是np.newaxis
。在您可以通过连接切片和
None
来构建[:,:,np.newaxis,np.newaxis]
:np.resize
代码:np.reshape
代码(典型的函数委托给数组方法):比较两个函数的计时-
resize
要慢得多。在就地
resize
速度很快:是的,但是如果你看the docs for the ^{} method ,它会给你答案:^{} function 。在
在NumPy中有很多这样的对,其中}的spamified副本,而{}spamifies
np.spam(a, eggs)
生成{a
在适当的位置。如果你看一下这些文档,它们会链接在一起。在所以,我想你想要的是:
相关问题 更多 >
编程相关推荐