【问题标题】:Convert a python numpy array to c++ stl vector将 python numpy 数组转换为 c++ stl 向量
【发布时间】:2011-02-06 22:08:10
【问题描述】:

我正在寻找一种在 c++ 中读取包含 numpy 数组的文本文件并将数据放入 vector< vector< ... > > 的方法,有人可以帮帮我吗?

非常感谢。 阿奇

编辑:文本文件的格式

[[[ 0 1] [ 2 3] [ 4 5] [ 6 7] [ 8 9]] [[10 11] [12 13] [14 15] [16 17] [18 19]] [[20 21] [22 23] [24 25] [26 27] [28 29]] [[30 31] [32 33] [34 35] [36 37] [38 39]]]

也许更易读:

[
    [
        [ 0 1] [ 2 3] [ 4 5] [ 6 7] [ 8 9]
    ]
    [
        [10 11] [12 13] [14 15] [16 17] [18 19]
    ]
    [
        [20 21] [22 23] [24 25] [26 27] [28 29]
    ]
    [
        [30 31] [32 33] [34 35] [36 37] [38 39]
    ]
]

【问题讨论】:

  • 你能发布一个你需要阅读的数据的例子吗?它是如何格式化的?
  • 当然,这类似于 [[[ 0 1] [ 2 3] [ 4 5] [ 6 7] [ 8 9]] [[10 11] [12 13] [14 15] [16 17] [18 19]] [[20 21] [22 23] [24 25] [26 27] [28 29]] [[30 31] [32 33] [34 35] [36 37] [38 39]]](格式不对,怎么美化?)
  • 您可以在 cmets 中的文本周围使用“`”。
  • 您的示例中的嵌套级别 (3) 是否不变?更一般地说,格式是常量,还是您有办法在某处获得各种尺寸?
  • 好吧,文本文件中有3个级别的数组,第一个维度是变量,而其他两个维度是固定的。例如,我们可以找到:'(12, 36, 36) (100, 36, 36) (83, 36, 36) ....'

标签: c++ python arrays vector numpy


【解决方案1】:
float val;
::std::vector<float> vals;
ifstream stream("c:/file.txt");
while(stream >> val) {
   vals.push_back(val);
}

【讨论】:

  • 我认为这里真正的问题是@Archy作为数组的数组,所以有点困难。
  • 感谢您的努力 :)
  • 好吧,在 numpy 文档中,他们说有一个 C-API ... 很棒 :) 但是,我是 C++ 新手,谁能告诉我如何在 C++ 代码中包含 API? (我没有找到任何可以下载的 C 库,所以我得出结论,它是隐式安装的 Numpy ......?)
【解决方案2】:

这将取决于您的专业水平。

如果您有经验,我建议您使用 Boost.Spirit.Qi 之类的东西,这是一个真正的解析器库。但是可能需要一些时间来适应。

否则,这取决于您掌握的信息...当您向我们提供更多详细信息时,我会编辑我的答案,因为它可能会变得相当复杂:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-22
    • 2022-01-03
    • 2021-10-19
    • 2016-02-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多