导入:import numpy as np
约定将numpy库简写为np
ndarray数组:由俩部分组成
ndarray数组一般要求所有元素的数据类型相同,下标从0开始
使用np.array()
生成一个ndarray数组,ndarray数组包括:
属性名 | 描述 |
---|---|
.ndim | 秩 |
.shape | ndarray对象的尺度 |
.size | 对象元素的总个数 |
.dtype | 对象的元素类型 |
.itemsize | 对象中每个元素的大小,一字节为单位 |
具体效果见代码
>>> import numpy as np
>>> b=np.arange(6)
>>> b
array([0, 1, 2, 3, 4, 5])
>>> b.ndim
1
>>> b.shape
(6,)
>>> b.size
6
>>> b.dtype
dtype('int32')
>>> b.itemsize
4
数据类型 | 描述 |
---|---|
bool | 布尔类型,取值为 True 或 False |
intc | 与c语言的int类型一致,一般为int32 或 int64 |
intp | 用于索引的整数,一般为int32 或 int64 |
int8 | 字节长度的整数,[-128,127] |
int16 | 字节长度的整数,[-32768,32767] |
int32 | 字节长度的整数,[-2^32 , 2^32-1] |
int64 | 字节长度的整数,[-2^64 , 2^64 -1] |
uint8 | 8位无符号的整数 [0,255] |
uint16 | 16位无符号的整数 [0,65535] |
uint32 | 32位无符号的整数 [0,2^32-1] |
uint64 | 64位无符号的整数 [0,2^64-1] |
float16 | 16位半精度的浮点数,1位符号位,5位指数,10位尾数 |
float32 | 32位半精度的浮点数,1位符号位,8位指数,23位尾数 |
float64 | 64位半精度的浮点数,1位符号位,11位指数,52位尾数 |
complex64 | 复数类型,实部与虚部都是32位浮点数 |
complex123 | 复数类型,实部与虚部都是64位浮点数 |
在python基础中只有几种的数据类型,这里为什么要分这么多种呢?
因为numpy库是用于科学计算,故需要划分清楚
非同质的ndarray数组
c=np.array([[1,2,3],[0,1,2,3,4]])
c.dtype
这个时候c.dtype返回的是指Object
创建ndarray数组
a = np.array(list/tuple)
》》》使用列表或者元组等容器创建
>>>import numpy as np
>>> x=np.array([1,2,3,4])
>>> x
array([1, 2, 3, 4])
>>> y=np.array({1,2,3,4})
>>> y
array({1, 2, 3, 4}, dtype=object)
>>> z=np.array((1,2,3,4,8))
>>> z
array([1, 2, 3, 4, 8])
》》》使用函数创建
函数名 | 描述及说明 |
---|---|
np.arange(n) | 返回ndarray类型,生成的元素从0到n-1 |
np.ones(shape) | 根据shape生成一个全一数组,shape是元组类型 |
np.zero(shape) | 根据shape生成一个全0数组,shape是元组类型 |
np.full(shape,val) | 根据shape生成一个数组,每个元素都是val |
np.eye(n) | 创建一个正方形n*n的单位矩阵,对角线元素为1,其余为0 |
np.ones_like(a) | 根据数组a的形状生成一个全1数组 |
np.zero_like(a) | 根据数组a的形状生成一个全0数组 |
np.full_like(a,val) | 根据数组a的形状生成一个全 val 数组 |
np.linspace(a) | 根据起止数据等间距填充数据 |
np.concatenate() | 将俩个或多个数组合并生成一个新数组 |
实例(部分方法):
>>> a=np.linspace(1,10,4)
>>> a
array([ 1., 4., 7., 10.])#经过了运算生成的都是浮点数
>>> b=np.ones((2,3,4),dtype=np.int32)
>>> b
array([[[1, 1, 1, 1],
[1, 1, 1, 1],
[1, 1, 1, 1]],
[[1, 1, 1, 1],
[1, 1, 1, 1],
[1, 1, 1, 1]]])
>>> b.reshape((3,8))
array([[1, 1, 1, 1, 1, 1, 1, 1],
[1, 1, 1, 1, 1, 1, 1, 1],
[1, 1, 1, 1, 1, 1, 1, 1]])
astype()一定会创建一个新的数组
tolist()函数
>>> c=np.full((2,3,4),25,dtype=np.int32)
>>> c
array([[[25, 25, 25, 25],
[25, 25, 25, 25],
[25, 25, 25, 25]],
[[25, 25, 25, 25],
[25, 25, 25, 25],
[25, 25, 25, 25]]])
>>> c.tolist()
[[[25, 25, 25, 25], [25, 25, 25, 25], [25, 25, 25, 25]], [[25, 25, 25, 25], [25, 25, 25, 25], [25, 25, 25, 25]]]