小网站源码,id链接wordpress,戴尔公司网站设计特色,wordpress点击量设置数据类型的混合使得这种转换比通常更复杂。最后的答案是#xff0c;将字段复制到目标数组具有速度和通用性的结合。在让我们构造一个示例#xff1a;In [850]: dtOut[850]: dtype([(cycle, In [851]: xnp.zeros((3,),dt)In [852]: x[cycle][0,10,23]In [853]: x[dxn][3,2,2]I…数据类型的混合使得这种转换比通常更复杂。最后的答案是将字段复制到目标数组具有速度和通用性的结合。在让我们构造一个示例In [850]: dtOut[850]: dtype([(cycle, In [851]: xnp.zeros((3,),dt)In [852]: x[cycle][0,10,23]In [853]: x[dxn][3,2,2]In [854]: x[V][1,1,1]In [855]: xOut[855]:array([(0, 3, 0.0, 1.0, 0.0), (10, 2, 0.0, 1.0, 0.0),(23, 2, 0.0, 1.0, 0.0)],dtype[(cycle, 我们可以按照该链接中建议的方式查看3个浮动字段^{pr2}$但是如果我想更改所有值我需要制作y的副本。不允许一次写入多个字段。在In [863]: yx[list(x.dtype.names[2:])].view(dt1).copy()In [864]: y[f0]np.arange(9.).reshape(3,3)具有一个数据类型的view无法捕获行结构我们必须用reshape将其添加回来。dt1和(3,)形状可以避免这个问题。在In [867]: x[list(x.dtype.names[2:])].view(np.float32)Out[867]: array([ 0., 1., 0., 0., 1., 0., 0., 1., 0.], dtypefloat32)In [868]: x.tolist()Out[868]: [(0, 3, 0.0, 1.0, 0.0), (10, 2, 0.0, 1.0, 0.0), (23, 2, 0.0, 1.0, 0.0)]In [869]: np.array(x.tolist())Out[869]:array([[ 0., 3., 0., 1., 0.],[ 10., 2., 0., 1., 0.],[ 23., 2., 0., 1., 0.]])可以使用astype转换各个字段In [878]: x[cycle].astype(np.float32)Out[878]: array([ 0., 10., 23.], dtypefloat32)In [879]: x[dxn].astype(np.float32)Out[879]: array([ 3., 2., 2.], dtypefloat32)但不是多个字段In [880]: x.astype(np.float32)Out[880]: array([ 0., 10., 23.], dtypefloat32)recfunctions帮助操作结构化数组(和重新排列)from numpy.lib import recfunctions它们中的许多构造了一个新的空结构并逐字段复制值。在这种情况下相当于In [890]: znp.zeros((3,5),np.float32)In [891]: for i in range(5):.....: z[:,i] x[x.dtype.names[i]]In [892]: zOut[892]:array([[ 0., 3., 0., 1., 0.],[ 10., 2., 0., 1., 0.],[ 23., 2., 0., 1., 0.]], dtypefloat32)在这个小例子中它比np.array(x.tolist())慢一点。但对于30000张唱片来说这个速度要快得多。在在结构化数组中记录通常比字段多因此字段的迭代并不慢。在