numpy
1.numpy基础
- 一个开元的python科学计算库
- 计算起来要比python简洁高效
- Numpy使用ndarray对象来处理多维数组
- ndarry的优势
- 内存块风格
- python中的list—分离式存储,存储内容多样化
- ndarry—一体存储,存储类型必须一样
- ndarry支持并行化运算(向量化运算)
- ndarry底层是用C语言写的,效率更高
2. N维数组-ndarray
2.1数组的属性
属性名字 |
属性解释 |
ndarray.shape |
数组维度的元组 |
ndarray.ndim |
数组维数 |
ndarray.size |
数组中的元素数量 |
ndarray.itemsize |
一个数组元素的长度(字节) |
ndarray.dtype |
数组元素的类型 |
score = np.array([[80,89,86,67,79],[78,97,89,67,81],
[90,94,78,67,74],[91,91,90,67,69],
[76,87,75,67,86],[70,79,84,67,84],
[94,92,93,67,64],[86,85,83,67,80]])
a = score.shape
#(8, 5),8行5列,表示数组维度的元素
a = score.ndim
#2,数组的维数,该数组为一个2维数组
a = score.size
#40,数组中的元素数量,该数组中共有40个元素
a = score.itemsize
#4,在这40个元素中,每个元素的大小
a = score.dtype
#int32,数组元素的类型
print(a)
2.2 数组的形状
#array可以有很多维度,本次以1,2,3维度举列
a = np.array([1,2,3])
print(a.shape)
#(3,),一维数组,3个元素
a = np.array([[1,2,3],[4,5,6]])
print(a.shape)
#(2, 3),二维数组,2行3列
a = np.array([[[1,2,3],[4,5,6]],[[1,2,3],[4,5,6]]])
print(a.shape)
#三维数组可以看做是多个2维数组相叠加的结果
#(2, 2, 3),第1个2指的是包含2个2维数组,第2个2指的是2维数组中包含2个1维数组,3指的是一维数组中包含3个元素
2.3数组类型
名称 |
描述 |
简写 |
np.bool |
用一个字节存储的布尔类型(True或False) |
'b' |
np.int8 |
一个字节大小,-128 ~ 127 |
'i' |
np.int16 |
整数,-32768 ~ 32767 |
'i2' |
np.int32 |
整数,-2^31 ~ 2^32 -1 |
'i4' |
np.int64 |
整数,-2^63 ~ 2^63 - 1 |
'i8' |
np.uint8 |
无符号整数,0 ~ 255 |
'u' |
np.uint16 |
无符号整数,0 ~ 65535 |
'u2' |
np.uint32 |
无符号整数,0 ~ 2^32 - 1 |
'u4' |
np.uint64 |
无符号整数,0 ~ 2^64 - 1 |
'u8' |
np.float16 |
半精度浮点数:16位,正负号1位,指数5位,精度10位 |
'f2' |
np.float32 |
单精度浮点数:32位,正负号1位,指数8位,精度23位 |
'f4' |
np.float64 |
双精度浮点数:64位,正负号1位,指数11位,精度52位 |
'f8' |
np.complex64 |
复数,分别用两个32位浮点数表示实部和虚部 |
'c8' |
np.complex128 |
复数,分别用两个64位浮点数表示实部和虚部 |
'c16' |
np.object_ |
python对象 |
'O' |
np.string_ |
字符串 |
'S' |
np.unicode_ |
unicode类型 |
'U' |
#声明数据类型
a = np.array([[1,2,3],[4,5,6]],dtype=np.float32)
print(a.shape)
a = np.array(["hello","python","i",1],dtype=np.string_)#把所包含的元素全部转换为字符型
print(a.dtype)#S6,元素中最长的字符串为6