import numpy as np
list1 = [1,5,56,6]
array_1 = np.array(list1)
array_1 = np.arange(1,10,2)
list2 = [[1,2],[5,6],[9,10]]
array_2 = np.array(list2)
list2 = [[1,2],[5,6],[9,10]]
array_2 = np.array(list2)
array_2.ndim # 获取数组的维度
array_2.shape # 获取数组的 index和column 返回为元组
array_2.size # 获取数组的 元素个数
array = np.arange(24)
array.shape = (4,6) # 直接更改原数组的形状
array1 = array.reshape((12,2)) # 返回新形状的数组
array2 = array.reshape((24,),order = 'F') # 将二维数组转化为一维数组 'C'为按行展开 'F'为按列展开
array3 = array.reshape((2,3,4))
array = np.arange(24).reshape((12,2))
list1 = array.tolist() # 用一个变量来接受
"""
np.bool
np.int8 整数
np.int16
np.int32
np.int64
np.uint8 无符号整数
np.uint16
np.uint32
np.uint64
np.float16 小数
np.float32
np.float64
np.complex64 复数
np.complex128
np.object_ python对象
np.string_ 字符串
np.unicode
"""
array = np.array([2,3,5,6],dtype = np.int16) # 指定数据类型
array.dtype # 查看数据类型
array.astype(np.int8) #更改数据类型
array.itemsize # 查看数组中每个元素的字节长度
array = np.array([np.random.random() for i in range(100)])
array1 = np.round(array,2)
array1 = np.arange(1,101).reshape((25,4))
array2 = np.arange(11,111).reshape((25,4))
array1*2 # 数组和数的计算
array1*array2 # 数组和数组之间的操作 对应位置数据计算
array3 = np.arange(1,26).reshape((25,1))
array4 = np.arange(1,5).reshape((1,4))
array1+array3 # 行或者列相同的一维数组和多维数组之间可以计算 即一维数组分别于多维数组的各行或者各列计算
array1*array4
"""
一维数组:0轴
二维数组:x-0轴 y-1轴
三维数组:x-0轴 y-1轴 z-2轴
"""
array = np.arange(1,25).reshape(2,3,4)
np.sum(array,axis = 0) #按0轴返回求和
np.sum(array,axis = 1) #按列求和
np.sum(array,axis = 2)#按行求和
np.sum(array)
array1 = np.arange(10)
array1[1:9:2] #一维数组的索引
# 二维数组的索引
array2 = np.arange(24).reshape(4,6)
array2[[1,3]] # 取不连续的多行
array2[:,[2,5]] # 取不连续的多列
array2[[1,3],[4,5]] # 取其中几个点出来
"""
逻辑运算符:& | ~
三目运算符: np.where(array > 80,input1,input2) 满足条件 输出input1,不满足输出input2
"""
array = np.arange(24).reshape((4,6))
array[[1,3],[1,5]] = 100
array[array>20] = 199
array[(array>10) & (array<20)] = 1000
result = np.where(array>20,1,0) # 变量接受
array = np.arange(15).reshape((3,5))
# 数组的添加
np.append(array,[2,3,6,5,6]) # 横向加成 返回一维数组
np.append(array,[[2,3,6,7,9]],axis = 0) # 沿0轴追加
np.append(array,[[2],[3],[6]],axis = 1) # 沿1轴追加
np.insert(array,1,[5,6]) # 先展开再插入
np.insert(array,1,[1,2,5,6,9],axis = 0) # 沿0轴插入
np.insert(array,1,[5,6,9],axis = 1) # 沿1轴插入
# 数组中的删除
np.delete(array,1) # 先展开再删除
np.delete(array,1,axis = 0) # 沿0轴删除
np.delete(array,2,axis = 1) # 沿1轴删除
# 数组去重
array = np.array(np.random.random(15)).reshape((3,5))
u,index,inverse,count = np.unique(array,return_index = True,return_inverse = True,return_counts = True)
print(u)
print(index)
print(inverse)
print(count)
import numpy as np
array1 = np.arange(15).reshape((3,5))
array2 = np.array(np.random.random(15)).reshape((3,5))
# 获取最大值
np.max(array1,axis = 0) # 按轴0获取最大值
np.max(array1) # 获取最大值
# 获取最小值
np.min(array1,axis = 0) # 按轴0获取最小值
np.min(array1) # 获取最小值
# 获取平均值
np.mean(array1,axis = 0) # 按轴0获取平均值
np.mean(array1) # 获取平均值
# 数据的比较
result = np.maximum(array1,array2) # 获取两个数组中的较大值
result = np.minimum(array1,array2) # 获取两个数组中的较小值
result = np.maximum(array1,5) # 获取较大值
# 返回给定axis上累计的和
array1.cumsum(0) # 获取沿0轴累加的数组
array1.cumsum(1) # 获取沿1轴累加的数组
# 求最小值和最大值的索引
np.argmin(array1,axis = 0)
np.argmax(array1,axis = 0)
# 计算标准差
np.std(array1,axis = 0) # 按轴0轴获取标准差
np.std(array1,axis = 1) # 按轴1轴获取标准差
# 计算方差
np.var(array1,axis = 0) # 按轴0轴获取方差
np.var(array1,axis = 1) # 按轴1轴获取方差
# 计算协方差
np.cov(array1) # 获取斜方差
# 计算中位数
np.median(array1,axis = 0) # 按轴0轴获取中位数
import numpy as np
array1 = np.arange(1,16).reshape((3,5))
array2 = np.array(np.random.random(15))
array3 = np.array(np.random.random(15)).reshape((3,5))
# 平方根函数:
np.sqrt(array1)
# 绝对值函数
np.abs(array1)
# 指数函数
np.exp(array1)
np.exp2(array1)
array1**2
2**array1
# 对数函数
np.log(np.e)
np.log2(2)
np.log10(10)
np.log(array1)/np.log(2)
# 平方函数
np.square(array1)
# 正负号计算函数
np.sign(array1)
# NaN判断函数
np.isnan(array1)
# inf判断函数
np.isinf(array1)
# 三角函数
np.sin(array1)
np.cos(array1)
np.tan(array1)
np.arcsin(array1)
np.arccos(array1)
np.arctan(array1)
np.sinh(array1)
np.cosh(array1)
np.tanh(array1)
# 小数和整数分离函数
float_b,int_n = np.modf(array2)
# 向上、向下取整函数
np.ceil(array1)
np.floor(array2)
# 四舍五入函数
np.rint(array2)
np.round(array2,2)
# 向0取整函数
np.trunc(array2)
# 元素级乘法、加法、除法、减法
np.multiply(array1,array3)
np.divide(array1,array3)
np.add(array1,array3)
np.subtract(array1,array3)
# 矩阵乘法
np.matmul(array1,array3.T)
# 元素级求模
np.mod(array1,array3)
import numpy as np
array1 = np.arange(1,16).reshape((3,5))
array2 = np.random.randint(1,high = 100,size = 15).reshape((3,5))
# 根据轴连接
np.concatenate((array1,array2),axis = 0)
np.concatenate((array1,array2),axis = 1)
# 根据轴堆叠
np.stack((array1,array2),axis = 0)
np.stack((array1,array2),axis = 1)
# 矩阵垂直拼接
np.vstack((array1,array2))
# 矩阵水平拼接
np.hstack((array1,array2))
# 数组分割
np.split(array1,3) #水平均匀切割成三份
np.split(array1,5,axis = 1)
np.split(array1,[1]) # 按数组位置切割
np.vsplit(array1,3)
np.hsplit(array1,5)
# 创建nan和inf
np.nan
np.inf
array1 = np.arange(1,16,dtype = 'float').reshape((5,3))
array1[[2,4],[2,2]] = np.nan
# 判断inf和nan是什么数据类型
type(np.nan) # floay
type(np.inf) # float
# 任意两个nan不相等
np.nan != np.nan
# 判断nan的个数
np.count_nonzero(array1 != array1)
# nan和任何数计算都是nan
np.sum(array1)
# 将nan替换为其他数
array1[np.isnan(array1)] = 0
# 处理数组中的nan
array = np.arange(1,16).reshape((5,3)).astype('float')
array[[0,4],[1,2]] = np.nan
for i in range(array.shape[1]):
number = np.count_nonzero(array[:,i] != array[:,i])
if number != 0:
nonnan = array[:,i][array[:,i] == array[:,i]]
array[:,i][np.isnan(array[:,i])] = np.mean(nonnan)
import numpy as np
array = np.arange(1,16).reshape((3,5))
np.transpose(array) # 转置
array.T # 转置
by CyrusMay 2022 04 05