淺談Python numpy創建空數組的問題
一、問題描述:
有一個shape為(308, 2)的二維數組,以及單獨的一個數字,需要保存到csv文件中,這個單獨的數字讓其保存到第3列第一行的位置。
二、具體的實現:
首先要想把一個(308, 2)的二維數組和一個數字給拼接起來,直接拼接沒辦法實現,因為行數和列數都不同的兩個ndarry是無法拼接的(此處按照目前我學的理解,是無法直接拼接的,如果可以的話,麻煩評論一下)。
然後我首先想到的解決方法就是先建一個(308,1)的二維數組,然後令這個二維數組的第一個元素設置成那個數字,然後進行拼接,保存。
為使數據可以顯示完全,以僅以3行數據為例:
>>> a = np.ones((3,2)) >>> b = 0.2 >>> _b = np.empty((3,1)) >>> _b[0, 0] = b >>> c = np.c_[a, _b] >>> print(c) [[1.00000000e+000 1.00000000e+000 2.00000000e-001] [1.00000000e+000 1.00000000e+000 2.12199579e-313] [1.00000000e+000 1.00000000e+000 2.54639495e-313]] >>>
但是這樣,我把結果保存到文件時,第3列的除第一行,其他的行是有數據的,我不想讓它顯示數據。
也就是empty這個函數隻是創建一個未初始化的數組,實際上裡面的數值都是垃圾值。
那麼如何去實現視覺上沒有數據呢,其實利用空的字符串就可以瞭。
所以就通過np.ones設置dtype為str,此時生成的是元素都為空字符串的數組,(具體的原因還不清楚),然後此時若直接設置第一行的元素為某個值,是不行的,會自動變為’0‘,隻有在拼接之後,然後再給它賦值才可以,這個地方我不是很理解,但是結果是正確的。
三、完整代碼:
y_true = np.ones((3, 1), dtype=np.int) y_pred = np.ones((3, 1), dtype=np.int) y = np.c_[y_true, y_pred] accuracy = np.zeros(shape=(y_true.shape[0], 1), dtype=np.str) # 此時若設置accuracy[0, 0] = '0.89',最終accuracy[0, 0]存的是'0',具體原因還不清楚 res = np.c_[y, accuracy] # 先拼接起來 res[0, 2] = '0.89' # 然後再設置就可以瞭 res = pd.DataFrame(res, columns=['y_true', 'y_pred', 'accuracy']) res.to_csv('1.csv') # 保存到文件中
從文件中讀取的時候,直接讀出來,空白的地方被賦值為nan
a = pd.read_csv('1.csv', usecols=(1, 2, 3)) a = a.values print(a, type(a), a.dtype)
關於np.nan需要註意的地方如下:
- np.nan不是空對象。
- 對列表中的nan進行操作時不能用”==np.nan”來判斷。隻能用np.isnan()來操作。
- np.nan的數據類型是float。
import numpy as np np.nan == np.nan Out[3]: False aa = np.array([1,2,3,np.nan,np.nan,4,5,np.nan]) aa Out[5]: array([ 1., 2., 3., nan, nan, 4., 5., nan]) aa[aa==np.nan] = 100 #錯誤方式 aa Out[7]: array([ 1., 2., 3., nan, nan, 4., 5., nan]) aa[np.isnan(aa)] = 100 #對nan操作的正確方式 aa Out[9]: array([ 1., 2., 3., 100., 100., 4., 5., 100.]) type(np.nan) Out[10]: float
關於參考:https://www.jb51.net/article/212249.htm
到此這篇關於淺談Python numpy創建空數組的問題的文章就介紹到這瞭,更多相關numpy創建空數組內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- python數學建模是加深Numpy和Pandas學習
- Python數據分析之Numpy庫的使用詳解
- Python NumPy教程之數組的創建詳解
- 聊聊Numpy.array中[:]和[::]的區別在哪
- NumPy-ndarray 的數據類型用法說明