最明顯的方式運行:
>>> my_data
array([(17, 182.10000610351562), (19, 175.60000610351562)],
dtype=[('f0', '<i2'), ('f1', '<f4')])
>>> n = len(my_data.dtype.names) # n == 2
>>> my_data.astype(','.join(['f4']*n))
array([(17.0, 182.10000610351562), (19.0, 175.60000610351562)],
dtype=[('f0', '<f4'), ('f1', '<f4')])
>>> my_data.astype(','.join(['f4']*n)).view('f4')
array([ 17. , 182.1000061, 19. , 175.6000061], dtype=float32)
>>> my_data.astype(','.join(['f4']*n)).view('f4').reshape(-1, n)
array([[ 17. , 182.1000061],
[ 19. , 175.6000061]], dtype=float32)
在上一個問題中,所有的字段都是相同的類型。 – hpaulj 2014-10-03 17:19:56
我寫了一個[快速腳本](https://gist.github.com/anonymous/74487ac64c2f69b781d5)查看30000x3000陣列中哪個答案是最快的,而且他們非常相似 - JohnZwinck's:0.30s,Jaime's :0.41s,hpaulj's:0.46s,Warren Weckesser:0.47s。他們都使用了大約3GB的內存。 – Garrett 2014-10-03 22:41:23