【问题标题】:numpy savetxt - ValueError: Expected 1D or 2D array, got 0D array insteadnumpy savetxt - ValueError: Expected 1D or 2D array, 得到 0D array
【发布时间】:2022-01-18 22:37:41
【问题描述】:

尝试将两个 numpy 数组值保存到 csv,但出现错误。

profit_value = cumulative_profits[-1] - cumulative_profits[insample] # For this example, consider profit_value = 0.15093565  profit_value is of type <class 'numpy.float32'>

date_value = x_dates[insample]  # For this example, consider date_value = 2017-02-01 22:52:00 and is of type <class 'numpy.str_'>

with open("modelout.csv", "ab") as csvfile:
    np.savetxt(csvfile, date_value, delimiter=",")
    np.savetxt(csvfile, profit_value, delimiter=",")

错误是:

ValueError: 预期 1D 或 2D 数组,得到 0D 数组

关于解决方法或如何解决此问题的任何想法?

【问题讨论】:

  • 首先是阅读savetxt 文档。此函数旨在编写一个csv 文件——一个具有整齐列和行的表格。这就是为什么它需要一个二维数组。和数字与默认fmt。您显然正在尝试编写单个值。类型是np.float32 并不重要。它仍然是一个单一的值,具有形状()。你为什么用savetxt
  • 嗨!我正在尝试执行此脚本的滑动窗口、多次运行。它是值的时间序列,date_value 是日期时间戳,profit_value 是日期时间戳的美元(浮点数)。我试图将一个日期时间戳和一个浮点值附加到 csv 脚本的每次运行。 date_value 和 profit_value 都是从不同的 numpy 值设置的,这就是我一直尝试使用 savetxt 的原因。
  • 您可以在不使用savetxt 的情况下将字符串和浮点数写入文本文件。它们来自数组的事实并不重要。 savetxt 遍历其 array 参数,并执行 f.write( fmt % tuple(row)),即格式化行并将其写入文件。就是这样。

标签: python numpy csv


【解决方案1】:

由于 numpy 数组每个只有一个值,因此输出到 csv 时无需迭代(因此,不使用 numpy savetxt)。我将单个值放入列表中并写入 csv(附加到上次运行)。这有效:

import csv

profit_value = cumulative_profits[-1] - cumulative_profits[insample] 
date_value = x_dates[insample] 

meta_out = [date_value, profit_value]
with open('modelout.csv','a', newline='') as fd:
   writer = csv.writer(fd, delimiter=',')
   writer.writerow(meta_out)

【讨论】:

    猜你喜欢
    • 2018-08-25
    • 2021-05-05
    • 2021-11-01
    • 2021-07-28
    • 2018-12-23
    • 2020-10-10
    • 2020-11-22
    • 2023-03-26
    • 2018-03-20
    相关资源
    最近更新 更多