数组类型
In [1]:
from numpy import *
之前已经看过整数数组和布尔数组,除此之外还有浮点数数组和复数数组。
复数数组
产生一个复数数组:
In [2]:
a = array([1 + 1j, 2, 3, 4])
Python会自动判断数组的类型:
In [3]:
a.dtype
Out[3]:
dtype('complex128')
对于复数我们可以查看它的实部和虚部:
In [4]:
a.real
Out[4]:
array([ 1., 2., 3., 4.])
In [5]:
a.imag
Out[5]:
array([ 1., 0., 0., 0.])
还可以设置它们的值:
In [6]:
a.imag = [1,2,3,4]
查看 a
:
In [7]:
a
Out[7]:
array([ 1.+1.j, 2.+2.j, 3.+3.j, 4.+4.j])
查看复共轭:
In [8]:
a.conj()
Out[8]:
array([ 1.-1.j, 2.-2.j, 3.-3.j, 4.-4.j])
事实上,这些属性方法可以用在浮点数或者整数数组上:
In [9]:
a = array([0.,1,2,3]) a.dtype
Out[9]:
dtype('float64')
In [10]:
a.real
Out[10]:
array([ 0., 1., 2., 3.])
In [11]:
a.imag
Out[11]:
array([ 0., 0., 0., 0.])
In [12]:
a.conj()
Out[12]:
array([ 0., 1., 2., 3.])
但这里,虚部是只读的,并不能修改它的值:
In [13]:
# 会报错 a.imag = [1,2,3,4]
--------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-13-3db28f506ec9> in <module>() 1 # 会报错 ----> 2 a.imag = [1,2,3,4] TypeError: array does not have imaginary part to set
指定数组类型
之前已经知道,构建数组的时候,数组会根据传入的内容自动判断类型:
In [14]:
a = array([0,1.0,2,3])
对于浮点数,默认为双精度:
In [15]:
a.dtype
Out[15]:
dtype('float64')
查看所用字节(8 bytes * 4
):
In [16]:
a.nbytes
Out[16]:
32
当然,我们也可以在构建的时候指定类型:
In [17]:
a = array([0,1.0,2,3], dtype=float32)