Python实用技巧_2

#scipy
#========================

#矩阵开平方
from scipy.linalg import sqrtm
a1 = sqrtm(A)

'''
import math
math.sqrt( x )
'''
#numpy
#==============================
import numpy as np

# 输出float64的精度
a1 = np.finfo(np.float64).eps

# 输出最大数
a2 = np.max(A)  # 获得数组最大值
a3 = np.maximum(A,B) #逐位比较获得最大值

# 取对角线元素
a3 = np.diagonal(A)  

# 矩阵*乘
1. np.multiply(A,B) 或者 A * B       # 数组对应元素位置相乘
2. np.dot(A,B)    # 对数组执行矩阵相乘运算

# 矩阵相除
C = A/B  # 矩阵点除
C =np.dot(A,np.linalg.inv(B))  # 矩阵相除

# 矩阵点除
# 1
a=np.array([[1.,2.],[3.,4.]])
c=np.divide(a,a) #矩阵点除
# 2
a = np.array([4,2,3])
b = np.array([2,5,7])
f = a/b

# 把A变成矩阵
np.mat(A)  

# 堆叠
np.hstack()  # 水平(按列顺序)把数组给堆叠起来。
np.vstack()  # 垂直(按照行顺序)的把数组给堆叠起来。

# 对一个矩阵按行按列累加
>>>import numpy as np
>>> c=[[1,2,3],[4,5,6],[7,8,9]]
>>> np.cumsum(c,axis=0)
array([[ 1,  2,  3],
       [ 5,  7,  9],
       [12, 15, 18]])
>>> np.cumsum(c,axis=1)
array([[ 1,  3,  6],
       [ 4,  9, 15],
       [ 7, 15, 24]])

# 按行按列求和
a = np.sum(C,axis=1)  # 按行求和
a = np.sum(C,axis=0)  # 按列求和

# 创建和矩阵a的维度同样大小的数组b,且b的每个元素都为1
b = np.ones(a.shape)

# 计算矩阵的2范数
b = np.linalg.norm(a,ord = 2)

# 求平均值
np.mean(now2,0) # 压缩行,对各列求均值
np.mean(now2,1) # 压缩列,对各行求均值

# 按照条件返回特定的值→np.where一位数组
t11 = np.where(D < w , 0, 1)  # 如果满足条件,返回0,否则返回1
t13 = (t11 == 1).all()  # 如果数组t11全为1,那么返回真,否则为假
t13 = (t11 == 1).any()  # 如果数组t11里面有1,则返回真,否则返回假

# 按照从做到右的顺序,把二维的矩阵降维成一维,并返回每个元素的横纵坐标→np.where二位数组
azis, ranges = np.where(np.ones_like(a))
'''
a→
[[1 1 1 1]
 [1 1 1 1]
 [1 1 1 1]
 [1 1 1 1]]
azis, ranges→
[0 0 0 0 1 1 1 1 2 2 2 2 3 3 3 3] [0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3]
'''
# np.where()[0] 表示行索引,np.where()[1]表示列索引
import numpy as np 
a = np.arange(12).reshape(3,4)
print('a:', a)
print('np.where(a > 5):', np.where(a > 5))
print('a[np.where(a > 5)]:', a[np.where(a > 5)])
print('np.where(a > 5)[0]:', np.where(a > 5)[0])
print('np.where(a > 5)[1]:', np.where(a > 5)[1])
print(a[np.where(a > 5)[0], np.where(a > 5)[1]])

a: [[ 0 1 2 3]
 [ 4 5 6 7]
 [ 8 9 10 11]]
np.where(a > 5): (array([1, 1, 2, 2, 2, 2]), array([2, 3, 0, 1, 2, 3]))
a[np.where(a > 5)]: [ 6 7 8 9 10 11]
np.where(a > 5)[0]: [1 1 2 2 2 2]
np.where(a > 5)[1]: [2 3 0 1 2 3]
[ 6 7 8 9 10 11]

# 创建指定间隔的数组
np.linspace(0,3,4) # 等间隔创建len为4的数组,起始点0,终止点3.

# 以A的内容堆叠在(MxN)的矩阵B中
B = np.tile(A, (M, N))

# 创建一个和矩阵A的shape一样的全1矩阵B
B = np.ones_like(A)


工作TIPS:

  1. 如果报错原因实在找不到,可以注释掉
  2. 调试时,关掉并行
  3. 先完成,再优化
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

十子木

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值