1.以管理员的形式打开cmd
2.安装numpy插件
pip install numpy
3.安装成功后,输入pip list 命令查看是否安装成功
pip list
3.创建
#使用array创建一维数组
list01 = [1,2,3,4] np01 = np.array(list01) print(np01) print(type(np01))
#使用array创建二维数组
list02 = [[1,2,3,4],[5,6,7,8]] np02 = np.array(list02) print(np02) print(type(np02))
#使用array创建三维数组
list03 = [[[1,2,3,4],[5,6,7,8],[9,10,11,12]]] np03 = np.array(list03) print(np03) print(type(np03)) """
用arange 创建数组
#一维数组
a = np.arange(10) #[0 1 2 3 4 5 6 7 8 9] a = np.arange(2,10) #[2 3 4 5 6 7 8 9] a = np.arange(1,10,2) #[1 3 5 7 9] a = np.arange(1,10,2,dtype=float) print(a) #二维数组 #切记前面的12,必须满足3*4 np01 = np.arange(12).reshape(3, 4) print(np01)
用random创建数组
# np.random.random() 生成0到1之间的随机数 #创建一维数组 size生成几个数据,可直接写4 np01= np.random.random(size=4) #[0.13475357 0.8088961 0.52055803 0.49706622] #创建二维数组 size=(3,4) 3行4列 可用()和[] ,效果一样 np01= np.random.random((3,4)) #创建三维数组 两个三行四列 np01= np.random.random((2,3,4)) print(np01)使用logspace创建数组
np.logspace(start,stop,num=50,endpoint=Ture,base=10.0,dtype=None)
| 参数 | 描述 |
|---|---|
| start | 序列的起始值 |
| stop | 序列的终止值 ,如果endpoint=True,则证明数组包含于数列 |
| num | 生成样本数量,默认是50 |
| endpoint | 如果为ture则包含stop,否则不包含 |
| base | 对数log的底数,默认10.0 |
| dtype | 数据类型 |
数组的属性创建一个长度为10的一维全为0的ndarry对象,然后让第五个元素等于 创建一个元素为从10到49的narray对象。 创建一个4*4的二维数组,并输出数组元素类型。 创建一个数组,该数组可以完全将坐标位置为(0,1,3)到(3,0,1)的转置。 将4题中的数据类型转换为float64。
| 属性 | 描述 |
|---|---|
| ndarray.ndim | 数组的轴(维度)的个数。在Python世界中,维度的数量被称为rank。 |
| ndarray.shape | 数组的维度。这是一个整数的元组,表示每个维度中数组的大小。对于有n行和m列的矩阵,shape将是(n,m)。因此,shape元组的长度就是rank或维度的个数 ndim。 |
| ndarray.size | 数组元素的总数。这等于shape的元素的乘积。 |
| ndarray.dtype | 一个描述数组中元素类型的对象。可以使用标准的Python类型创建或指定dtype。另外NumPy提供它自己的类型。例如numpy.int32、numpy.int16和numpy.float64。 |
| ndarray.itemsize | 数组中每个元素的字节大小。例如,元素为float64类型的数组的itemsize为8(=64/8),而int32类型的数组的itemsize为4(=32/8)。它等于ndarray.dtype.itemsize。 |
| ndarray.T | 数组转置,及行列调换 |
| ndarray.nbytes | 整个数组所需的字节数量,可以使用nbytes属性。其值等于数组的size属性值乘以 itemsize属性值。 |
np01 = np.array([1,2,3,4]) np01 = np.array([[1,2,3,4]]) #print(np01.ndim) print(np01.shape) print(np01.size) print(np01.dtype) print(np01.itemsize) #一个字节默认是8为 32/8 = 4 print(np01.nbytes)#一个数字字节4,4*4=16
list01 = [ [1,2], [3,4], [5,6] ] np01=np.array(list01) print(np01) np02= np01.T print(np02)数据的索引和切片
一维数组的索引
list01= [1,2,3,4,5] np01 = np.array(list01,dtype="int32") print(np01) """ 正向递增索引 从0开始 1, 2, 3, 4, 5 数据 0 1 2 3 4 索引 1.左开右闭 2.不写startIndex默认从0开始 """ print(np01[0]) #1 print(np01[1:4]) #[2 3 4] print(np01[1:5]) #[2 3 4 5] print(np01[:5]) #[1 2 3 4 5] """ 反向递减索引 从-1开始 1, 2, 3, 4, 5 数据 -5 -4 -3 -2 -1 索引 1.左开右闭 2.不写startIndex默认从0开始 """ print(np01[-1]) #5 print(np01[-5:-1]) #[1 2 3 4] print(np01[-5:]) #[1 2 3 4 5] 一维数组的切片
语法[start:stop:step] list01= [1,2,3,4,5] np01 = np.array(list01,dtype="int32") print(np01) #正向索引切片 print(np01[:])#从0到0 print(np01[3:])#从3开始到结尾 print(np01[:5])#从0开始到5结尾 print(np01[1:5:2])#步长是2 #反向索引切片 print(np01[::-1])#-1证明是反向获取 print(np01[-5:-2]) #正负一起使用 print(np01[-5:4]) #[1 2 3 4]二维数组的索引
#创建二维数组 list01= [ [1,2], [3,4], [5,6], [7,8] ] np01= np.array(list01) print(np01) #print(np01.ndim) #查看维数 print(np01[1])#获取第二行 print(np01[1][1])#获取第二行第一列二维数组的切片
[对行进行切片,对列的切片] 对行的切片:可以有start:stop:step 对列的切片:可以有start:stop:step #创建二维数组 list01= [ [1,2], [3,4], [5,6], [7,8] ] np01= np.array(list01) print(np01) print(np01[:,:])#所有行所有列 #所有行部分列 print(np01[:,1])#所有行第二列 print(np01[:,0:2])#所有行的第一列和第二列 #部分列所有行 print(np01[1,:])#获取第二行所有列 print(np01[0:2,:])#获取第一和二行所有列 print(np01[::2,:])#获取奇数行所有列 #部分行部分列 print(np01[1,1])#第二行第二列 #组合使用的时候改怎么办 #获取第三行第二列(6),第四行第一列(7) #行写成元组放在前面,列写成元组放在后面 a= np01[(2,3),(1,0)] print(a) #负索引的使用 print(np01[-1])#最后一行 print(np01[::-1])#行倒序 print(np01[::-1,::-1])#行倒序,列倒叙练习
数组的迭代 使用np.nditer迭代创建一个二维数组,取第二行第一列和第三行第二列的数据。 获取二维数组中数组的1,2行第2,3列的数据。
最好no,知道常用的即可
op,flags,op_flags,op_dtypes,order={‘C’,‘F’,‘A’}, casting,op_axes, itershape, buffersize,
""" flags : str的序列,可选。用于控制迭代器行为的标志。 “buffered”可在需要时启用缓冲。 “c_index”导致跟踪C顺序索引。 “f_index”导致跟踪Fortran-order索引。 “multi_index”导致跟踪多个索引或每个迭代维度一个索引元组。 op_flags:tr列表,可选。这是每个操作数的标志列表。至少,必须定“readonly”,“readwrite”或“writeonly”中的一个 “readonly”表示只读取操作数。 “readwrite”表示将读取和写入操作数。 “writeonly”表示只会写入操作数。 “no_broadcast”阻止操作数被广播。 “contig”强制操作数数据是连续的。 op_dtypes : dtype的dtype 或tuple,可选。操作数所需的数据类型 order: {‘C’,‘F’,‘A’,‘K’}, casting :{‘no’, ‘equiv’, ‘safe’, ‘same_kind’, ‘unsafe’},可选。控制进行复制或缓冲时可能出现的数据转换类型。建议不要将此设置为“unsafe”,因为它会对累积产生不利影响。 “no”表示完全不应强制转换数据类型。 “equiv”表示只允许更改字节顺序。 “safe”表示只允许保留值的强制转换。 “same_kind”意味着只允许安全的类型或类型内的类型,如float64到float32。 “unsafe”表示可以进行任何数据转换。 op_axes : 整数列表列表,可选。如果提供,则是每个操作数的int或None列表。操作数的轴列表是从迭代器的维度到操作数的维度的映射。可以为条目放置值-1,从而将该维度视为“newaxis”。 itershape : 整数元组,可选。迭代器的理想形状。这允许“allocate”具有由op_axes映射的维度的操作数不对应于不同操作数的维度,以获得该维度不等于1的值。 buffersize : int,可选。启用缓冲时,控制临时缓冲区的大小。设置为0表示默认值 "" "



