将不同长度的数组列表保存到csv

时间:2015-12-06 15:08:28

标签: python arrays csv numpy

我有data_pressure,这是一个numpy数组的列表,例如:

array([ 268752.,  26222.,  261152.,  260958.]),
array([ 123433., 98239., 98932.]),
array([ 2893789., 872398., 92839., 9283982., 7632762., 547627.,])

每个数组都有不同的长度。

我已经使用Python的csv模块保存到这个数组列表:

import csv

csvfile = "csvfile.csv"

with open(csvfile, "w") as output:
   writer = csv.writer(output, lineterminator='\n')
   for line in data_pressure:
       writer.writerow(line)   

一切都像魅力一样,但正如我用

读到的那样
import csv
data = []
with open('csvfile.csv', 'rb') as csvfile:
    spamreader = csv.reader(csvfile)
    for row in spamreader:
        data.append(np.asarray(row))

我得到了

array([ '268752.0',  '26222.0',  '261152.0',  '260958.0']),
array([ '123433.0', '98239.0', '98932.0']),
array([ '2893789.0', '872398.0', '92839.0', '9283982.0', '7632762.0', '547627.0',])

然后,任何数组中的每个值都是字符串类型而不是浮点数。

有没有办法规避这个问题?

3 个答案:

答案 0 :(得分:1)

你可以这样传递quoting=quote.QUOTE_NONNUMERIC

spamreader = csv.reader(csvfile, quoting=quote.QUOTE_NONNUMERIC)

请参阅the docs

  

指示writer对象引用所有非数字字段。

     

指示读者将所有非引用字段转换为float。

答案 1 :(得分:0)

csv是一个文本文档,因此将数值存储为字符串。将数组加载到numpy数组对象后,可以将数组的类型转换为float。

您可以使用this方法将其从字符串数组转换为浮点数组。

x = np.array(['1.1', '2.2', '3.3'], dtype='|S4')
y = x.astype(np.float)

答案 2 :(得分:0)

您可以按如下方式修改代码的阅读部分。

UIView.animate(withDuration: 0.2, delay: 0, options: .curveEaseInOut, animations: {
    self.viewBottomConstraint.constant = -500
    self.view.layoutIfNeeded()
}) { (_) in
    self.view.removeFromSuperview()
}

谢谢。