将Numpy格式化为具有字符串和浮点数的数组的CSV输出

时间:2017-10-18 10:54:12

标签: python arrays csv numpy

所以,

我对Python很陌生,所以我可能不太了解直截了当的事情。

我在Raspberry Pi上测试(玩)一个小气压传感器。传感器输出压力和温度值,以及其他一些不重要的东西。

我编写了一个小程序,用于存储压力和温度的输入,并将其置于一个numpy数组中。然后使用numpy.savetxt输出到csv文件,以便稍后使用通用电子表格应用程序进行读取。

为了有用我还需要为每个输出加时间戳,即csv文件中的“sometemperature”,“somepressure”,“current date and time”。

我正在努力使用numpy的格式选项,因为我的数组包含两个浮点数和一个字符串。我收到以下错误:

Traceback (most recent call last):
  File "temppressurelogger.py", line 15, in <module>
    np.savetxt("output.csv", data.reshape((1,3)), fmt = "%.2f %.2f %s", delimiter=",")
  File "/usr/lib/python2.7/dist-packages/numpy/lib/npyio.py", line 1073, in savetxt
    fh.write(asbytes(format % tuple(row) + newline))
TypeError: float argument required, not numpy.string_

我一直在试图弄清楚如何提供正确的fmt选项,但是一小时左右的谷歌搜索并没有真正找到关于同一行中相同数组中的字符串和浮点数的任何内容。

根据之前的一些反馈,我已经编写了下面的程序,其中包含用于测试的硬编码值,因此不需要Adafruit库。我目前的简单程序是:

    # import Adafruit_BMP.BMP085 as BMP085 # Using the Adafruit BMP sensor library
import time
import numpy as np

# sensor = BMP085.BMP085() # Defines sensor from which to read

t = time.asctime(time.localtime(time.time())) # Stores local time in t
temperature = 18.01 #sensor.read_temperature()
pressure = 10080.79 #sensor.read_pressure()

data = np.array([[temperature], [pressure], [t]])
np.dtype([("temperature", float), ("pressure", float), ("t", "S20")])
#print(array.shape)

np.savetxt("output.csv", data.reshape((1,3)), fmt = "%.2f %.2f %s", delimiter=",")

非常感谢任何帮助。

0 个答案:

没有答案