有人可以告诉我这段代码有什么问题吗?
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
预先感谢
答案 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')])