淺談Python numpy創(chuàng)建空數(shù)組的問題
一、問題描述:
有一個(gè)shape為(308, 2)的二維數(shù)組,以及單獨(dú)的一個(gè)數(shù)字,需要保存到csv文件中,這個(gè)單獨(dú)的數(shù)字讓其保存到第3列第一行的位置。
二、具體的實(shí)現(xiàn):
首先要想把一個(gè)(308, 2)的二維數(shù)組和一個(gè)數(shù)字給拼接起來,直接拼接沒辦法實(shí)現(xiàn),因?yàn)樾袛?shù)和列數(shù)都不同的兩個(gè)ndarry是無法拼接的(此處按照目前我學(xué)的理解,是無法直接拼接的,如果可以的話,麻煩評(píng)論一下)。
然后我首先想到的解決方法就是先建一個(gè)(308,1)的二維數(shù)組,然后令這個(gè)二維數(shù)組的第一個(gè)元素設(shè)置成那個(gè)數(shù)字,然后進(jìn)行拼接,保存。
為使數(shù)據(jù)可以顯示完全,以僅以3行數(shù)據(jù)為例:
>>> 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]] >>>
但是這樣,我把結(jié)果保存到文件時(shí),第3列的除第一行,其他的行是有數(shù)據(jù)的,我不想讓它顯示數(shù)據(jù)。
也就是empty這個(gè)函數(shù)只是創(chuàng)建一個(gè)未初始化的數(shù)組,實(shí)際上里面的數(shù)值都是垃圾值。
那么如何去實(shí)現(xiàn)視覺上沒有數(shù)據(jù)呢,其實(shí)利用空的字符串就可以了。
所以就通過np.ones設(shè)置dtype為str,此時(shí)生成的是元素都為空字符串的數(shù)組,(具體的原因還不清楚),然后此時(shí)若直接設(shè)置第一行的元素為某個(gè)值,是不行的,會(huì)自動(dòng)變?yōu)?0‘,只有在拼接之后,然后再給它賦值才可以,這個(gè)地方我不是很理解,但是結(jié)果是正確的。
三、完整代碼:
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)
# 此時(shí)若設(shè)置accuracy[0, 0] = '0.89',最終accuracy[0, 0]存的是'0',具體原因還不清楚
res = np.c_[y, accuracy] # 先拼接起來
res[0, 2] = '0.89' # 然后再設(shè)置就可以了
res = pd.DataFrame(res, columns=['y_true', 'y_pred', 'accuracy'])
res.to_csv('1.csv') # 保存到文件中

從文件中讀取的時(shí)候,直接讀出來,空白的地方被賦值為nan
a = pd.read_csv('1.csv', usecols=(1, 2, 3))
a = a.values
print(a, type(a), a.dtype)

關(guān)于np.nan需要注意的地方如下:
- np.nan不是空對(duì)象。
- 對(duì)列表中的nan進(jìn)行操作時(shí)不能用"==np.nan"來判斷。只能用np.isnan()來操作。
- np.nan的數(shù)據(jù)類型是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 #錯(cuò)誤方式 aa Out[7]: array([ 1., 2., 3., nan, nan, 4., 5., nan]) aa[np.isnan(aa)] = 100 #對(duì)nan操作的正確方式 aa Out[9]: array([ 1., 2., 3., 100., 100., 4., 5., 100.]) type(np.nan) Out[10]: float
關(guān)于參考:http://www.fzitv.net/article/212249.htm
到此這篇關(guān)于淺談Python numpy創(chuàng)建空數(shù)組的問題的文章就介紹到這了,更多相關(guān)numpy創(chuàng)建空數(shù)組內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python機(jī)器學(xué)習(xí)pytorch自定義數(shù)據(jù)加載器
這篇文章主要為大家介紹了python機(jī)器學(xué)習(xí)pytorch自定義數(shù)據(jù)加載器使用示例學(xué)習(xí),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-10-10
python實(shí)現(xiàn)支付寶轉(zhuǎn)賬接口
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)支付寶轉(zhuǎn)賬接口,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-05-05
Python中三維坐標(biāo)空間繪制的實(shí)現(xiàn)
這篇文章主要介紹了Python中三維坐標(biāo)空間繪制的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09
pycharm通過ssh連接遠(yuǎn)程服務(wù)器教程
今天小編就為大家分享一篇pycharm通過ssh連接遠(yuǎn)程服務(wù)器教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-02-02
python實(shí)現(xiàn)圖像的隨機(jī)增強(qiáng)變換
這篇文章主要為大家介紹了如何利用pythons制作一個(gè)小工具工具,可以實(shí)現(xiàn)圖像的隨機(jī)增強(qiáng)變換,可用于分類訓(xùn)練數(shù)據(jù)的增強(qiáng),有需要的可以參考下2024-11-11
numpy庫與pandas庫axis=0,axis= 1軸的用法詳解
這篇文章主要介紹了numpy庫與pandas庫axis=0,axis= 1軸的用法詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-05-05
Python復(fù)合賦值運(yùn)算符由淺入深實(shí)例探究
這篇文章主要為大家介紹了Python復(fù)合賦值運(yùn)算符由淺入深實(shí)例探究,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2024-01-01

