一、 需要使用外部库 as 起别名

import numpy asnp

二、 定义一维数组

array = np.array([1,2,3,4])    #传入的是列表
print(type(array))          #<class 'numpy.ndarray'>

三、 定义多维数组

array2D = np.array([[1,2,3,4,5],[6,7,8,9,10]])  #N行*M列 需要严格对齐,不能[1,2,3,4,5],[6,7,8,9]
array3D = np.array([[[1,2,3],[4,5,6]],[[1,2,3],[4,5,6]]],dtype = np.int)     #三维数组  可以用dtype = np.  指定数组类型,不加则自动确定类型
print(array3D)

print(array3D.shape)    #数组形状
print(array3D.dtype)    #数组类型

四、 特殊数组

#特殊数组
print(np.zeros(shape=(4,5)))    #全0数组,zeros_like 建立与所给数组一样的全0数组
print(np.ones(shape = (5,5)))    #全1数组,ones_like 
print(np.identity(8))   # 8*8 对角线全为1的方阵
print(np.eye(4,5))  #主对角线全为1,不一定是方阵
print(np.sign(-100))    #判断数据的符号
print(np.diag([1,2,3,4,5])) #用传入的一维向量构造矩阵(值在主对角线)

五、 arange生成器

#arange生成器,生成numpy数组  range
arrayld = np.arange(1,21,1) #不包含上界(起始,结束,步长)
print(arrayld)

#重新指定数组形状
print(array2D.reshape(5,2))

#arange生成多维数组
print(np.arange(1,21,1).reshape(2,2,5))

六、 类型转换astype

#类型转换
print(arrayld)
floatarray = arrayld.astype(dtype = np.float)
print(floatarray)

七、 矢量化计算

#矢量化计算
array2d = np.arange(1,21,1).reshape(4,5)
print(array2d+array2d)
print(array2d-array2d)
print(array2d*array2d)
print(array2d/array2d)

array2d2= np.arange(2,22,1).reshape(4,5)
print(array2d2+array2d)

print(np.sqrt(array2d2))    #开方

八、 索引和切片

8.1. 一维数组的索引和切片

arrayld = np.arange(1,11,1)
print(arrayld[0])   #索引
print(arrayld[5:11:1])  #i切片[下界,上界),步长
arrayld[5::1] = 10    #批量赋值,不写上界,表示切到末尾
print((arrayld))
arrayld[:] = 0  #:表示全切,切片全区域赋值
print(arrayld)

数组切片是原始数组的视图。这意味着数据不会被复制,视图上的任何修改都会反映到源数组上。
想要不修改,需要使用.copy()

#.copy()后修改arr,不会修改原arrayld
arr = arrayld[:].copy()
arr[:] = 1
print(arrayld)
print(arr)

arr = arrayld[:]
arr[:] = 1
print(arrayld)
print(arr)

8.2. 二维数组的索引和切片

二维数组对象[二维度下标索引值,一维度元素下标索引值]

#二维数组的索引arr[0][2]或arr[0,2]  可以用逗号
array2D = np.array([[1,2,3,4,5],
                    [6,7,8,9,10]])
print(array2D[0::1,2:])     #前面行,后面列::步长,2:表示取后面所有
print(array2D[0::1,:2])

8.3. 三维数组的索引和切片


三维度索引的 语法:数组对象[ 三维度轴索引值 ,二维度下标索引值,一维度元素下标索引值]

九、 补充(与或非)

#and or not
x=20
if x>10 and x<100:  #  &&
    pass
if x>10 or x<-10:   #  ||
    pass
if not x:           #  !
    pass