日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學(xué)無(wú)先后,達(dá)者為師

網(wǎng)站首頁(yè) 編程語(yǔ)言 正文

關(guān)于numpy強(qiáng)制類型轉(zhuǎn)換的問(wèn)題_python

更新時(shí)間: 2022-07-20 編程語(yǔ)言

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])

原文鏈接:https://blog.csdn.net/springtostring/article/details/118185716

欄目分類
最近更新