【发布时间】:2019-09-23 22:51:56
【问题描述】:
我有以下数据框:
d = {'histogram' : [[1,2],[3,4],[5,6]]}
df = pd.DataFrame(d)
直方图的长度始终相同(在本例中为 2)。
我想将“直方图”列转换为 2D numpy 数组以输入神经网络。首选输出是:
output_array = np.array(d["histogram"])
即:
array([[1, 2],
[3, 4],
[5, 6]])
但是当我尝试时:
df["histogram"].to_numpy()
结果是一个列表数组,而不是 numpy 数组数组:
array([list([1, 2]), list([3, 4]), list([5, 6])], dtype=object)
这对于神经网络来说是有问题的,因为我必须指定尺寸/形状。
我尝试通过转换为 numpy 数组来解决问题:
df["histogram_arrays"] = df["histogram"].apply(lambda x: np.array(x))
df["histogram_arrays"].to_numpy()
返回一维数组而不是二维数组。
array([array([1, 2]), array([3, 4]), array([5, 6])], dtype=object)
如何将直方图放入二维数组?
【问题讨论】:
-
如果您的输入不正确,您必须以某种方式进行转换。但是您是否真正体验过使用 apply 对您的数据集来说太慢了?也就是说,您是否尝试过数据集的一部分?
-
另外:你想要一个数组数组,还是一个二维数组?您列出的最后一项不是二维数组:它是对象的一维数组(恰好是数组,但这并不意味着整个事物都是二维的数组)。
-
你是对的,不,我需要它作为二维数组。让我编辑问题。
-
这是否也意味着保证输入中的各个列表都具有相同的长度(例如,应该是 2)?
标签: pandas numpy numpy-ndarray