溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

numpy強(qiáng)制類型轉(zhuǎn)換的問(wèn)題怎么解決

發(fā)布時(shí)間:2022-05-23 11:25:52 來(lái)源:億速云 閱讀:148 作者:zzz 欄目:開(kāi)發(fā)技術(shù)

本篇內(nèi)容主要講解“numpy強(qiáng)制類型轉(zhuǎn)換的問(wèn)題怎么解決”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“numpy強(qiáng)制類型轉(zhuǎn)換的問(wèn)題怎么解決”吧!

numpy強(qiáng)制類型轉(zhuǎn)換

今天用numpy遇到一個(gè)關(guān)于類型轉(zhuǎn)換的問(wèn)題,

import numpy as np
A = np.array([1,2,3,4,5,6,7,8,9])   
A[0]=3.2
print(A)
# [3 2 3 4 5 6 7 8 9]

可以發(fā)現(xiàn)A[0]=3.2,被強(qiáng)制轉(zhuǎn)換成整型3了。發(fā)生的原因是A的類型是np.int,賦值浮點(diǎn)數(shù),會(huì)自動(dòng)轉(zhuǎn)為整型。

這樣的問(wèn)題一旦出現(xiàn)很難發(fā)現(xiàn),在寫(xiě)成程序時(shí)要提前想好要用的np類型。

補(bǔ)充,兩個(gè)整型np.array做運(yùn)算時(shí),會(huì)根據(jù)運(yùn)算自動(dòng)轉(zhuǎn)換類型。

A = np.array([1,2,3,4,5,6,7,8,9])
B = np.array([2,3,4,5,6,7,8,9,10])
print(A/B)
# [0.5    0.66666667    0.75    0.8     0.83333333       0.85714286   0.875      0.88888889    0.9 ]

numpy類型強(qiáng)制轉(zhuǎn)換api

有時(shí)候我們從文件讀取的numpy類型就不是我們想要的,需要強(qiáng)制轉(zhuǎn)換

A = np.array([1,2,3,4,5,6,7,8,9])  
A.dtype = 'float'   # 不能為dtype賦予類型,數(shù)據(jù)會(huì)出錯(cuò)
A.astype('float')  # 正確做法

numpy數(shù)據(jù)類型轉(zhuǎn)換astype,dtype

1.查看數(shù)據(jù)類型

In [11]: arr = np.array([1,2,3,4,5])

In [12]: arr
Out[12]: array([1, 2, 3, 4, 5])

// 該命令查看數(shù)據(jù)類型
In [13]: arr.dtype
Out[13]: dtype('int64')

In [14]: float_arr = arr.astype(np.float64)

// 該命令查看數(shù)據(jù)類型
In [15]: float_arr.dtype
Out[15]: dtype('float64')

2.轉(zhuǎn)換數(shù)據(jù)類型

// 如果將浮點(diǎn)數(shù)轉(zhuǎn)換為整數(shù),則小數(shù)部分會(huì)被截?cái)?
In [7]: arr2 = np.array([1.1, 2.2, 3.3, 4.4, 5.3221])

In [8]: arr2
Out[8]: array([ 1.1   ,  2.2   ,  3.3   ,  4.4   ,  5.3221])

// 查看當(dāng)前數(shù)據(jù)類型
In [9]: arr2.dtype
Out[9]: dtype('float64')

// 轉(zhuǎn)換數(shù)據(jù)類型  float -> int
In [10]: arr2.astype(np.int32)
Out[10]: array([1, 2, 3, 4, 5], dtype=int32)

3.字符串?dāng)?shù)組轉(zhuǎn)換為數(shù)值型

In [4]: numeric_strings = np.array(['1.2','2.3','3.2141'], dtype=np.string_)

In [5]: numeric_strings
Out[5]: array(['1.2', '2.3', '3.2141'], dtype='|S6')

// 此處寫(xiě)的是float 而不是np.float64, Numpy很聰明,會(huì)將python類型映射到等價(jià)的dtype上
In [6]: numeric_strings.astype(float)
Out[6]: array([ 1.2, 2.3, 3.2141])

到此,相信大家對(duì)“numpy強(qiáng)制類型轉(zhuǎn)換的問(wèn)題怎么解決”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI