[英]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.