簡體   English   中英

'numpy.ndarray' 對象如何不是 'numpy.ndarray' 對象?

[英]How do 'numpy.ndarray' object do not 'numpy.ndarray' object?

當您調用 DataFrame.to_numpy() 時,pandas 將找到可以容納 DataFrame 中所有 dtype 的 NumPy 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'

請幫我解決這個問題。

您可以使用一行代碼將 ndarray 轉換為 pandas df,然后轉換為 csv 文件來解決該問題。

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

pred是一個ndarray 它沒有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]]

ipython默認提供的repr顯示:

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。

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')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM