基于Python 3.6.3
多數(shù)服從少數(shù)
numpy.array中數(shù)值類型必須保持一致勘高,當(dāng)不一致時财搁,服從“多數(shù)服從少數(shù)”原則渤早,自動更改為一致形式卤材。
import numpy
numbers = numpy.array([1, 2, 3, 4])
print (numbers)
numbers.dtype ##查看數(shù)據(jù)類型##
輸出結(jié)果為:
[1 2 3 4]
dtype('int32')
例1.更改其中一個數(shù)值的類型
import numpy
numbers = numpy.array([1, 2, 3, 4.0])
print (numbers)
numbers.dtype
輸出結(jié)果為:
[ 1. 2. 3. 4.]
dtype('float64')
例2.更改其中一個數(shù)值的類型
import numpy
numbers = numpy.array([1, 2, 3, '4'])
print (numbers)
numbers.dtype
輸出結(jié)果為:
['1' '2' '3' '4']
dtype('<U11')
以上是只有一個數(shù)值與其他數(shù)值類型不同的情況,那么若存在多種數(shù)值類型的情況呢竣况?
一開始有兩個猜想:
1.與順序有關(guān)克婶,即以最后一位或其他位置數(shù)值的類型為準(zhǔn);
2.與數(shù)值類型的優(yōu)先級有關(guān)丹泉。
不妨試一試
例3
import numpy
numbers = numpy.array([1, 2, 3, '4', 5.0])
print (numbers)
numbers.dtype
輸出結(jié)果為:
['1' '2' '3' '4' '5.0']
dtype('<U11')
例4
import numpy
numbers = numpy.array([1, 2, 3, 4.0, '5'])
print (numbers)
numbers.dtype
輸出結(jié)果為:
['1' '2' '3' '4.0' '5']
dtype('<U32')
例3情萤、例4可以否定假設(shè)1,也即與順序無關(guān)摹恨。
那么應(yīng)該是與優(yōu)先級有關(guān)筋岛,觀察結(jié)果我們可以發(fā)現(xiàn),當(dāng)數(shù)值中存在字符類型時晒哄,程序會將所有數(shù)據(jù)都轉(zhuǎn)化為字符類型睁宰,也即