将元组附加到np数组会返回标量列表而不是元组

时间:2017-10-17 20:27:14

标签: python arrays pandas numpy tuples

我试图创建一个numpy元组数组,但生成的np数组包含标量而不是元组。

我有:

[  700072.   711071.  1123467.  1133810.  1799492.  1810464.  3861590. 3871927.  4124862.  4135798.  5097266.  5107561.  5392353.  5402949. 5528955.  5539925.  6056021.  6066913.  6730803.  6741807.]

结果是:

http://[temp.com]/storage/tests/de139607636857fade861a3c2c472643.txt

如您所见,这些是标量,而不是元组。

我做错了什么?

2 个答案:

答案 0 :(得分:1)

这是正确的行为。 Numpy.append将展平您的数据并添加它。看一下这里的示例:https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.append.html

嵌套数组并不是一个好主意。也许你想要一个多维数组。无论哪种方式,使用append,因为Python列表效率极低,最好分配一个空数组,然后填充它。

答案 1 :(得分:1)

如果你不打算将数组用于任何有用的东西(矢量化操作),只需使用一个列表。

nod_intervals = []
for index, row in log_df.iterrows():
    if row['gesture'] == 'Nod' and row['label'] == 'y':
        nod_intervals.append((row['start'], row['end']))

可能更快(不保证):

m = log_df['gesture'].eq('Nod') & log_df['label'].eq('y')
nod_intervals = log_df[m][['start', 'end']].apply(tuple, 1).values