'numpy.ndarray'对象如何不成为'numpy.ndarray'对象?

时间:2019-06-14 15:09:19

标签: python pandas numpy export-to-csv numpy-ndarray

当您调用DataFrame.to_numpy()时,熊猫会找到NumPy dtype,它可以容纳DataFrame中的所有dtype。但是如何执行反向操作?

我有一个'numpy.ndarray'对象'pred'。看起来像这样:

  

[[0.00599913 0.00506044 0.00508315 ... 0.00540191 0.00542058 0.00542058]]

我正在尝试这样做:

 pred = np.uint8(pred)
 print("Model predict:\n", pred.T)

但是我得到了

  

[[0 0 0 ... 0 0 0]]

为什么在转换之后,我没有得到这样的东西:

  

0 0 0 0 0 0 ... 0 0 0 0 0 0

以及如何将pred写入文件?

pred.to_csv('pred.csv', header=None, index=False)
pred = pd.read_csv('pred.csv', sep=',', header=None)

给出错误消息:

AttributeError                            Traceback (most recent call last)
<ipython-input-68-b223b39b5db1> in <module>()
----> 1 pred.to_csv('pred.csv', header=None, index=False)
      2 pred = pd.read_csv('pred.csv', sep=',', header=None)
AttributeError: 'numpy.ndarray' object has no attribute 'to_csv'

请帮助我解决这个问题。

3 个答案:

答案 0 :(得分:6)

您可以通过一行代码将 ndarray 转换为 pandas df,然后转换为 csv 文件。

pd.DataFrame(X_train_res).to_csv("x_train_smote_oversample.csv")

答案 1 :(得分:0)

predndarray。它没有to_csv方法。 pandas DataFrame就是这样。

但是让我们看看第一件事。

复制阵列显示,添加逗号,让我列出一个列表:

In [1]: alist = [[0.00599913, 0.00506044, 0.00508315, 0.00540191, 0.00542058, 0.
   ...: 00542058]]                                                              
In [2]: alist                                                                   
Out[2]: [[0.00599913, 0.00506044, 0.00508315, 0.00540191, 0.00542058, 0.00542058]]

并从中创建一个数组:

In [3]: arr = np.array(alist) 
In [8]: print(arr)                                                              
[[0.00599913 0.00506044 0.00508315 0.00540191 0.00542058 0.00542058]]

repr作为默认显示的ipython显示:

In [4]: arr                                                                     
Out[4]: 
array([[0.00599913, 0.00506044, 0.00508315, 0.00540191, 0.00542058,
        0.00542058]])

由于双括号,这是一个二维数组。它的转置形状为(6,1)。

In [5]: arr.shape                                                               
Out[5]: (1, 6)

转换为uint8可以正常工作(我更喜欢astype版本)。但是

In [6]: np.uint8(arr)                                                           
Out[6]: array([[0, 0, 0, 0, 0, 0]], dtype=uint8)
In [7]: arr.astype('uint8')                                                     
Out[7]: array([[0, 0, 0, 0, 0, 0]], dtype=uint8)

转换后的形状与(1,6)相同。

这种转换几乎没有意义。这些值都在1到0之间。在转换为较小的(1字节)无符号整数时,可以预料的是全为0。

答案 2 :(得分:0)

import numpy as np
import pandas as pd

x  = [1,2,3,4,5,6,7]
x = np.array(x)
y = pd.Series(x)
print(y)
y.to_csv('a.csv')
相关问题