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

學無先后,達者為師

網站首頁 編程語言 正文

關于numpy強制類型轉換的問題_python

更新時間: 2022-07-20 編程語言

numpy強制類型轉換

今天用numpy遇到一個關于類型轉換的問題,

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]

可以發現A[0]=3.2,被強制轉換成整型3了。發生的原因是A的類型是np.int,賦值浮點數,會自動轉為整型。

這樣的問題一旦出現很難發現,在寫成程序時要提前想好要用的np類型。

補充,兩個整型np.array做運算時,會根據運算自動轉換類型。

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類型強制轉換api

有時候我們從文件讀取的numpy類型就不是我們想要的,需要強制轉換

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

numpy數據類型轉換astype,dtype

1.查看數據類型

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

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

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

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

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

2.轉換數據類型

// 如果將浮點數轉換為整數,則小數部分會被截斷
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])

// 查看當前數據類型
In [9]: arr2.dtype
Out[9]: dtype('float64')

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

3.字符串數組轉換為數值型

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

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

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

欄目分類
最近更新