【问题标题】:Extracting an array from a dataframe column that contains an array从包含数组的数据框列中提取数组
【发布时间】:2018-09-16 10:13:37
【问题描述】:

我正在使用荆棘和耳蜗来生成尖峰列车。结果是表单中的 pandas.DataFrame 的形式,“spikes”列包含我需要的尖峰时间数组。

DataFrame generated by thorns

当我尝试用

提取它时
a = df.as_matrix(['spikes'])

生成的矩阵将始终如下所示:

a = [[array([1,2,3])][array([4,5,6])]]

要进一步使用数据,我需要表格:

a= [[1,2,3][4,5,6]]

如何删除 array() 部分?

这是我使用的代码:

import cochlea

import thorns.waves as wv

#generating the spiketrain

sound = wv.ramped_tone(fs=100e3,freq=500,duration=0.3,dbspl=60)
spiketrain=cochlea.run_zilany2014(sound,fs=100e3,anf_num=(2,0,0),cf=500,seed=0,species='human')
print spiketrain

#trying to extrakt spiketime information
a = spiketrain.as_matrix(['spikes'])
print 'a='
print a

【问题讨论】:

  • a的实际形状是什么?
  • 如果我在示例中使用 a.shape a 是形状 (2,1) 的数组,问题是存储数据的形状,它不仅包含值,还包含数据类型形式为 array([1,2,3])
  • 哦,如果形状是 (2,1),那么整形将不起作用。我从一个不同的初始数组开始。以后我会试着看看。
  • 使用spiketrain['spikes'].values 得到的输出是什么?是不是想要的形状,如果不是,是什么形状?
  • 有了值,它仍然是形状数组([1,2,3])

标签: python arrays python-2.7 pandas numpy


【解决方案1】:

这是一种方式:

import pandas as pd, numpy as np

df = pd.DataFrame({'A': [np.array([1,2,3]), np.array([4,5,6]), np.array([7,8,9])]})

res = np.array(df['A'].values.tolist())

# array([[1, 2, 3],
#        [4, 5, 6],
#        [7, 8, 9]])

res2 = list(map(list, df['A']))

# [[1, 2, 3],
#  [4, 5, 6],
#  [7, 8, 9]]

【讨论】:

  • 看起来还是一样,但我想我现在可以在以后的模型中使用它。谢谢
  • @Eli.K,当然 - 我添加了一个可能对你有帮助的替代方案。
  • 可以,这样比较好,第二个生成正常的数组形式
猜你喜欢
  • 2011-05-04
  • 1970-01-01
  • 2018-08-31
  • 2021-01-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多