Python从数组中删除括号

时间:2018-07-04 00:35:18

标签: python arrays list pandas numpy

我有一个包含许多数组的列表。

coef

[array([[1.72158862]]),
 array([[3.28338167]]),
 array([[3.28004542]]),
 array([[6.04194548]])]

将其放入数据框可得到:

azone = pd.DataFrame(
    {'zone': zone,
     'coef': coef
    })

    zone    coef
0   1   [[1.7215886175218464]]
1   2   [[3.283381665861124]]

我想知道是否有去除括号的方法。我尝试了list(),但没有给我结果。

也列出另一个列表:

value

[[array([8.46565297e-294, 1.63877641e-002]),
 array([1.46912451e-220, 2.44570170e-003]),
 array([3.80589351e-227, 4.41242801e-004])]

我只想保留第二个值。期望输出为:

   value
0  1.63877641e-002
1  2.44570170e-003
2  4.41242801e-004

2 个答案:

答案 0 :(得分:2)

使用Ravel:

coef = [np.array([[1.72158862]]),
        np.array([[3.28338167]]),
        np.array([[3.28004542]]),
        np.array([[6.04194548]])]

coef = np.array(coef).ravel()

print(coef)

array([1.72158862, 3.28338167, 3.28004542, 6.04194548])

此外,如果您不打算修改返回的1-d数组,建议您使用numpy.ravel,因为它不会复制该数组,而只是返回该数组的视图,比numpy.flatten快得多

答案 1 :(得分:1)

您可以使用NumPy的flatten方法从多维数组列表中提取一维数组。例如:

coef = [np.array([[1.72158862]]),
        np.array([[3.28338167]]),
        np.array([[3.28004542]]),
        np.array([[6.04194548]])]

coef = np.array(coef).flatten()

print(coef)

array([1.72158862, 3.28338167, 3.28004542, 6.04194548])

由于NumPy数组位于Pandas数据帧的下方,因此您将发现Pandas coef系列现在将成为dtype float,并且仅包含标量。