【问题标题】:How to use dtype to structure 1D array in numpy如何使用 dtype 在 numpy 中构造一维数组
【发布时间】:2013-03-21 20:44:09
【问题描述】:

我需要将 ndarray 解析为固定形状。我在使用 dtype 时需要帮助,因此它会解析整个数组,而不仅仅是第一个匹配项。

a
Out[193]: '1\t2\t3\t4\t5\t6\t'

ar = np.loadtxt(StringIO(a),dtype={'names':('x','y'),'formats':('f8','f8')}).view(np.recarray)

ar.x
Out[195]: array(1.0)

ar.y
Out[196]: array(2.0)

成为我想要的样子:

ar.x
Out[195]: array(1.0,3.0,5.0)

ar.y
Out[196]: array(2.0,4.0,6.0)

如果有人可以解释 dtype 中的设置,那就太好了 =)

【问题讨论】:

    标签: python arrays data-structures numpy scipy


    【解决方案1】:

    问题不在于您的 dtype,而在于您使用了错误形状的数组(一维而不是二维)。有很多方法可以用来重塑数据,但这是我能想到的最简单的方法,假设您确实需要像这样使用 loadtxt:

    raw = np.loadtxt(StringIO(a), dtype='f8')
    resh = raw.reshape(-1,2) # This will work for any (even) length initial data
    rec = resh.view([('x', 'f8'), ('y', 'f8')], np.recarray)
    

    注意 -1 形状的意思是,“无论什么都能让事情顺利进行,所以其他维度都是正确的。”

    【讨论】:

    • ValueError: 不能指定输出类型两次。
    • 我猜你猜到了,但我颠倒了 .view() 参数的顺序。在我的编辑中修复了它。对不起!
    猜你喜欢
    • 2012-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-27
    • 2015-09-11
    • 2019-07-28
    • 1970-01-01
    • 2015-11-01
    相关资源
    最近更新 更多