相关文章推荐
安静的八宝粥  ·  void operator - ...·  11 月前    · 
坚强的四季豆  ·  Azure Batch Endpoint ...·  1 年前    · 
追风的大熊猫  ·  安装 Windows Azure Pack ...·  1 年前    · 
温柔的大脸猫  ·  pytorch1.3.0+cuda10.0+ ...·  1 年前    · 

将numpy.void转换为numpy.ndarray

6 人关注

我在python中加载了一个带有 numpy.genfromtxt 的.csv文件。现在它返回一个一维的 numpy.ndarray ,在这个数组中, numpy.void 对象实际上只是整数的数组。但是我想把这些对象从 numpy.void 类型转换为 numpy.array 。为了澄清这一点。

>>> print(train_data.shape)
(42000,)
>>> print(type(train_data[0]))
<class 'numpy.void'>
>>> print(train_data[0])
(9, 0, 0)

所以这里的数组(9,0,0),其类型为numpy.void,应该是numpy.array

如何将train_data的所有值转换为numpy数组?

效率也有些重要,因为我正在处理大量的数据。

Some more code

>>> with open('filename.csv, 'rt') as raw_training_data:
>>>     train_data = numpy.genfromtxt(raw_training_data, delimiter=',', names=True, dtype=numpy.integer)
>>> print(train_data.dtype)
[('label', '<i4'), ('pixel0', '<i4'), ('pixel1', '<i4')]
>>> print(type(train_data))
<class 'numpy.ndarray'>
    
4 个评论
你应该展示 genfromtxt 的调用。 什么是 train_data.dtype ? 我猜它是一个结构化数组。 它有1个多字段,可以通过字段名来访问。 是否容易转换为2d数字类型将取决于字段的dtypes。
@hpaulj 我加了 train_data.dtype
train_data['label'] 是第一个字段,等等。 如果你想要一个有3列的2D数组,请尝试 skip_header=1 而不是 names=True 。 由于字段都是 i4 ,我们可以在加载后进行转换,但以所需格式加载会更简单。
python
arrays
numpy
Tristan
Tristan
发布于 2018-10-30
2 个回答
samlli
samlli
发布于 2019-10-28
0 人赞同

使用 numpy.asarray() 方法,该方法将一个输入转换为一个数组

array=numpy.asarray(train_data[0])
    
如果我说得不清楚,请原谅。我的意思是将所有的'void'数组转换为正常的数组。所以通过做一些事情创建一个数组,里面有所有的numpy数组。
nickY
nickY
发布于 2019-10-28
0 人赞同