在以前版本的numpy中,我可以这样做:
data = np.array([(0,1,2),(3,4,5),(6,7,8)], dtype=np.dtype([('a','<f8'), ('b','<f8'),('c','<f8')]))
data_nd = data[['a','b']].view(('<f8',2))
这将给我一个原始排列data
的视图,它是np.float32
类型的二维nArray。在
在numpy版本1.14中,当我尝试上面的第二行时,我得到错误:
^{pr2}$这是因为data[['a','b']]
的itemsize仍然是24。好吧,没问题,但是有没有什么方法可以获得更新itemsize的数据列的副本,这样我就可以生成我想要的视图了?在
例如,即使复制data[['a','b']]
的副本(或深层副本),仍然会导致itemsize为24,这一点我无法理解。在
您是否意识到,没有元组,您的重新排列是3x3,具有复制的字段值:
无论如何,整个数组的视图仍然有效,您可以使用传统的列切片:
^{pr2}$
^{3}$tolist
是转换到/从结构化数组转换的旧备用。它仍然有效:将
data
创建更改为包含元组,实际上并不会更改视图行为,但可能更接近于您想要的(或无论如何我想要的):请注意,子字段显示现在包括偏移参数。在
基础数据库是相同的,因此3列视图可以使用或不使用子字段索引:
我还没有读过最新的变化。取而代之的是,我使用了过去行之有效的各种技巧。从结构化数组转换到/从中转换从来都不是简单和万无一失的。在
相关问题 更多 >
编程相关推荐