如何设置[int,float]的numpy 2d数组的dtype?

时间:2019-02-08 14:18:50

标签: python numpy

有人可以告诉我这段代码有什么问题吗?

import numpy as np

# Create an empty list
mylist = []
# append a variable number of 2d tuples to it, this might be a loop
mylist.append([0, 3.0])
mylist.append([1, 2.5])
print(mylist)
# Convert list to a numpy 2d array
mat = np.array(mylist)
print(mat)
dtype = [('A', 'int'), ('B', 'float')]
# Convert list to a numpy 2d array of [int, float]
mat = np.array(mylist, dtype = dtype)
print(mat)

当我将列表列表转换为numpy数组时,两个条目都变为float。 我想将每个项目的第一个条目保留为int,第二个浮点为 这是我得到的输出:

[[0, 3.0], [1, 2.5]]
[[ 0.   3. ]
 [ 1.   2.5]]
Traceback (most recent call last):
  File "dtype_test.py", line 10, in <module>
    mat = np.array(mylist, dtype = dtype)
TypeError: expected a readable buffer object

预先感谢

1 个答案:

答案 0 :(得分:0)

SEGV

请注意,数字已在结构化数组中重复。

如果相反,我们提供元组列表(请注意结构化数组的显示如何使用元组):

In [439]: mylist
Out[439]: [[0, 3.0], [1, 2.5]]
In [440]: mat
Out[440]: 
array([[0. , 3. ],
       [1. , 2.5]])
In [441]: np.array(mylist, dtype)
Out[441]: 
array([[(0, 0. ), (3, 3. )],
       [(1, 1. ), (2, 2.5)]], dtype=[('A', '<i8'), ('B', '<f8')])