如何将具有对象dtype的Numpy 2D数组转换为浮点数的常规2D数组

作为我正在研究的更广泛程序的一部分,我最终得到了带有字符串,3D坐标等混合在一起的对象数组。我知道对象数组与结构化数组相比可能不是很喜欢,但是我希望在不更改很多代码的情况下解决这个问题。

假设数组obj_array的每一行(具有N行)的格式为

Single entry/object of obj_array:  ['NAME',[10.0,20.0,30.0],....] 

现在,我正在尝试加载该对象数组并切片3D坐标块。到这里为止,一切都可以通过简单地让我们说出就可以了。

obj_array[:,[1,2,3]]

但是结果也是一个对象数组,当我想用​​以下方法形成一个浮点数的二维数组时,我将面临问题:

size [N,3] of N rows and 3 entries of X,Y,Z coordinates

现在,我正在遍历行,并将每一行分配给目标2d flot数组的一行,以解决此问题。我想知道numpy的数组转换工具是否还有更好的方法?我尝试了几件事,无法解决。

Centers   = np.zeros([N,3])

for row in range(obj_array.shape[0]):
    Centers[row,:] = obj_array[row,1]

谢谢

海梅

讨厌的小问题...我一直在愚弄这个玩具示例:

>>> arr = np.array([['one', [1, 2, 3]],['two', [4, 5, 6]]], dtype=np.object)
>>> arr
array([['one', [1, 2, 3]],
       ['two', [4, 5, 6]]], dtype=object)

我的第一个猜测是:

>>> np.array(arr[:, 1])
array([[1, 2, 3], [4, 5, 6]], dtype=object)

但这保留了objectdtype,因此也许是这样:

>>> np.array(arr[:, 1], dtype=np.float)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: setting an array element with a sequence.

通常,您可以执行以下操作来解决此问题:

>>> np.array(arr[:, 1], dtype=[('', np.float)]*3).view(np.float).reshape(-1, 3)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: expected a readable buffer object

不过不在这里,这有点令人困惑。显然是数组中的对象是列表这一事实,使之成为现实,因为用元组替换列表是可行的:

>>> np.array([tuple(j) for j in arr[:, 1]],
...          dtype=[('', np.float)]*3).view(np.float).reshape(-1, 3)
array([[ 1.,  2.,  3.],
       [ 4.,  5.,  6.]])

由于似乎没有完全令人满意的解决方案,因此最简单的方法可能是:

>>> np.array(list(arr[:, 1]), dtype=np.float)
array([[ 1.,  2.,  3.],
       [ 4.,  5.,  6.]])

尽管那不是很有效,但最好采用以下方法:

>>> np.fromiter((tuple(j) for j in arr[:, 1]), dtype=[('', np.float)]*3,
...             count=len(arr)).view(np.float).reshape(-1, 3)
array([[ 1.,  2.,  3.],
       [ 4.,  5.,  6.]])

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将具有对象dtype的Numpy 2D数组转换为浮点数的常规2D数组

来自分类Dev

将2D数组的2D数组转换为单个2D数组

来自分类Dev

如何将浮点数列表的2d np.array转换为2d浮点数np.array,将列表值堆叠到行

来自分类Dev

将4D浮点数组从txt(字符串)文件转换为numpy浮点数组

来自分类Dev

将String数组转换为2d数组

来自分类Dev

如何将一系列数组转换为2D numpy数组

来自分类Dev

将2D数组转换为对象

来自分类Dev

Java | 将2D int数组转换为2D char数组以进行println

来自分类Dev

将2d数组转换为其他类型的2d数组。int [,] => ushort [,]

来自分类Dev

如何将深度为2的元组转换为2D Numpy数组?

来自分类Dev

将2D numpy矩阵转换为2D numpy数组

来自分类Dev

如何将2D数组转换为1D数组以在视图中显示

来自分类Dev

如何将.mat二进制格式转换为2D numpy数组?

来自分类Dev

如何将2D numpy数组转换为一种热编码?

来自分类Dev

将Java 2D数组转换为带有流的2D ArrayList

来自分类Dev

将Java 2D数组转换为带有流的2D ArrayList

来自分类Dev

Python:将元组转换为2D数组

来自分类Dev

将xlsx转换为2d数组openpyxl的问题

来自分类Dev

将系列转换为2D数组

来自分类Dev

将2D数组转换为列表列表

来自分类Dev

将整数向量转换为2D数组

来自分类Dev

将TSV文件转换为2D数组-Java

来自分类Dev

将2d数组转换为矢量

来自分类Dev

将JSON数据转换为JavaScript 2D数组

来自分类Dev

将列表转换为2D数组

来自分类Dev

如何将我的 2D numpy 数组转换为具有给定类别的 Pandas 数据框?

来自分类Dev

如何将简单(平面)数组转换为多维(2D)数组

来自分类Dev

如何将锯齿状数组转换为2D数组?

来自分类Dev

如何将简单(平面)数组转换为多维(2D)数组

Related 相关文章

  1. 1

    如何将具有对象dtype的Numpy 2D数组转换为浮点数的常规2D数组

  2. 2

    将2D数组的2D数组转换为单个2D数组

  3. 3

    如何将浮点数列表的2d np.array转换为2d浮点数np.array,将列表值堆叠到行

  4. 4

    将4D浮点数组从txt(字符串)文件转换为numpy浮点数组

  5. 5

    将String数组转换为2d数组

  6. 6

    如何将一系列数组转换为2D numpy数组

  7. 7

    将2D数组转换为对象

  8. 8

    Java | 将2D int数组转换为2D char数组以进行println

  9. 9

    将2d数组转换为其他类型的2d数组。int [,] => ushort [,]

  10. 10

    如何将深度为2的元组转换为2D Numpy数组?

  11. 11

    将2D numpy矩阵转换为2D numpy数组

  12. 12

    如何将2D数组转换为1D数组以在视图中显示

  13. 13

    如何将.mat二进制格式转换为2D numpy数组?

  14. 14

    如何将2D numpy数组转换为一种热编码?

  15. 15

    将Java 2D数组转换为带有流的2D ArrayList

  16. 16

    将Java 2D数组转换为带有流的2D ArrayList

  17. 17

    Python:将元组转换为2D数组

  18. 18

    将xlsx转换为2d数组openpyxl的问题

  19. 19

    将系列转换为2D数组

  20. 20

    将2D数组转换为列表列表

  21. 21

    将整数向量转换为2D数组

  22. 22

    将TSV文件转换为2D数组-Java

  23. 23

    将2d数组转换为矢量

  24. 24

    将JSON数据转换为JavaScript 2D数组

  25. 25

    将列表转换为2D数组

  26. 26

    如何将我的 2D numpy 数组转换为具有给定类别的 Pandas 数据框?

  27. 27

    如何将简单(平面)数组转换为多维(2D)数组

  28. 28

    如何将锯齿状数组转换为2D数组?

  29. 29

    如何将简单(平面)数组转换为多维(2D)数组

热门标签

归档