【问题标题】:Python: Numpy, the data genfromtxt cannot do tranposePython:Numpy,数据 genfromtxt 无法转置
【发布时间】:2014-06-18 18:46:08
【问题描述】:

例如,如果我有一个 data.csv 文件,它看起来像:

    A   B
1|  1   2
2|  3   4

如果我以这种方式加载这些数据:

import numpy as np
from StringIO import StringIO
with open('test.csv', 'rb') as text:
    b = np.genfromtxt(   StringIO(text.read()), 
                         delimiter=",",
                         dtype = [('x', int), ('y', int)]) ##<=== in my case
                         ## I want may columns dtype
                         ## in different format
print b.tranpose()

它仍然给我这样,它没有被转置。

[(1,2) 
 (3,4)]

但如果我这样做:dtype = 'str'(这意味着所有列具有相同的格式 np.transpose() 效果很好。

================================================

但如果我这样做:

import numpy as np
a = np.array([(1,2), (3,4)])
print a.transpose()

正常工作

======= 我的问题 ======= 如果我从 txt 或 csv 加载 numpy 数据,并定义每列的数据类型。有什么方法可以让 numpy 数据正常工作吗?

【问题讨论】:

  • 您的第一个代码示例不是您实际运行的,因为它拼错了transpose 函数并且根本不会打印任何内容。请发布一个实际给出您声称的输出的示例。
  • 旁白:复制和粘贴原始 csv 文本本身通常是一个更好的主意。我不知道您的“csv”是否没有逗号,或者是否有并且您出于某种原因决定删除它们,从而使您的示例与您的代码不一致。
  • 已尝试打印bb.shape
  • 你能告诉我如何将 [(), (), ()] 转换为 numpy 数组 [[], [], []]?因为我在应用 numpy.genfromtxt() 之后才得到 [(),(),()]
  • 你有一个record array,它与普通数组略有不同。

标签: python csv numpy


【解决方案1】:

这是设计的目的,见document

Tself.transpose() 相同,但如果 self.ndim

这里有ndim1b array(你可能认为它的形状是(2,2),但它的形状是(2,),请注意),所以@987654330 @ 返回自身。

【讨论】:

  • 我的意思是,如果我使用 dtype = 'str',self.ndim 确实等于 2。但是如果我使用 dtype = [('name1', type1), ('name2', type2 ) ...] 那么这行不通。
猜你喜欢
  • 1970-01-01
  • 2018-03-18
  • 2021-06-11
  • 2012-08-30
  • 1970-01-01
  • 2018-01-06
  • 2013-11-06
  • 2014-05-23
  • 1970-01-01
相关资源
最近更新 更多