'numpy.ndarray'对象怎么不'numpy.ndarray'对象呢?
How do 'numpy.ndarray' object do not 'numpy.ndarray' object?
当您调用 DataFrame.to_numpy() 时,pandas 将找到可以容纳 DataFrame 中所有数据类型的 NumPy 数据类型。但是如何进行反向操作呢?
我有一个 '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'
请帮我解决这个问题。
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]]
或 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。
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')
您可以通过一行代码将 ndarray 转换为 pandas df,然后再转换为 csv 文件来解决问题。
pd.DataFrame(X_train_res).to_csv("x_train_smote_oversample.csv")
当您调用 DataFrame.to_numpy() 时,pandas 将找到可以容纳 DataFrame 中所有数据类型的 NumPy 数据类型。但是如何进行反向操作呢?
我有一个 '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'
请帮我解决这个问题。
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]]
或 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。
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')
您可以通过一行代码将 ndarray 转换为 pandas df,然后再转换为 csv 文件来解决问题。
pd.DataFrame(X_train_res).to_csv("x_train_smote_oversample.csv")