numpy的应用及结果


import numpy as np
# numpy基本加减和取行操作
a = np.array([1,1,1,1])
b = np.array([[1],[1],[1],[1]])
c = np.array([[1,1,1,1]])
t1=a+b
t2=c+b
print(t1)
print(t2,'\n') # 广播机制

W = np.array([[1,1,1],[2,2,2]])
print(W[:,1]) # 会返回一维数组
print(W[1],'\n') # 取得是W1行,返回的也是一维数组

W[:,1] = np.array([5,5])
print(W[:])
# 这里用array[5,5]这样的一维数组直接可以把W矩阵的第1列替换(维度符合即可)

x = [
[1,2,3,4],
[5,6,7,8],
[9,10,11,12]
]

# delete()函数
p1 = np.delete(x, 1, 0) # 第0维度(行)1行被删除(初始行为0行)
print(p1)
p2 = np.delete(x, 1, 1) # 第1维度(列)1行被删除
print(p2)
p3 = np.delete(x, 1) # 拉平后删除第1个元素(初始为第0个)
print(p3)
p4 = np.delete(x, [0,1], 1) # 第1维度(列)第0、1行被删除
print(p4)

# insert()函数
q1 = np.insert(x, 1, [1,1,1,1], 0) # 第0维度(行)第1行添加[1,1,1,1]
print('>>>>q1>>>>\n',q1)
q2 = np.insert(x, 0, [1,1,1], 1) # 第1维度(列)第0列添加1,1,1
print('>>>>q2>>>>\n',q2)
q3 = np.insert(x, 3, [1,1,1,1], 0) # 第0维度(行)第3行添加[1,1,1,1]
print('>>>>q3>>>>\n',q3)

# append()函数
m1 = np.append(x,[[1,1,1,1]],axis=0) # 第0维度(行)尾部添加[[1,1,1,1]],注意两个[],相同维度
print('>>>>m1>>>>\n',m1)
m2 = np.append(x,[[1],[1],[1]],axis=1) # 第1维度(列)尾部添加[[1],[1],[1]],注意两个[],相同维度
print('>>>>m2>>>>\n',m2)
m3 = np.append(x,[1,1,1,1]) # 拉平后再尾部添加[1,1,1,1],这里可以[[1,1,1,1]]和[1,1,1,1]均可
print('>>>>m3>>>>\n',m3)

# np.random.choice(a, size, replace, p)
a1 = np.random.choice(7,5) # 从0~7中随机选择5个数组成一维数组
a2 = np.random.choice([0,1,2,3,4,5,6],5) # 从给定list中随机选择5个数组成一维数组
a3 = np.random.choice(np.array([0,1,2,3,4,5,6]),5) # 将list换成array数组依然可以运行,效果一致
a4 = np.random.choice([0,1,2,3,4,5,6],5,replace=False) # 上述均有重复,将replace设置为False,即可按要求没有重复的选取
a5 = np.random.choice(np.array([0,1,2,3,4,5,6]),5,p=[0.1,0.1,0.1,0.1,0.1,0.1,0.4])# 加权

print(a1,'\n',a2,'\n',a3,'\n',a4,'\n',a5)

np.argmax(a, axis=None, out=None)
a = np.array([[1,1,1],[2,2,2],[0,3,6]])
b1 = np.argmax(a) # 将数组a拉平,最大值索引为9(初始索引为0)
print(b1)
b2 = np.argmax(a, axis=0) # 按列选取最大值的索引
print(b2)
b3 = np.argmax(a, axis=1) # 按行选取最大值的索引
print(b3)

# 星号(*)的作用
y1 = np.linspace(-10.0,10.0) # 默认生成50个数据

y2 = np.linspace(1,10,10) # 生成10个数据,包括首尾

y3 = np.linspace(1,10,10,endpoint=False) # 不包括尾部数据

y4= np.linspace(1, 10, 6, retstep=True) # 将步长与结果的数组放入一个list、

print(y1,'\n',y2,'\n',y3,'\n',y4)

# 拉平操作 ravel()和faltten()及reshape(1,-1)的区别联系(补充[None,:]操作)

x = np.array([[1,2,3],[4,5,6],[1,2,3]])
print(x.flatten()) # 拉平
print(x.ravel(),'\n')
print(x.ravel('F')) # 按列拉平
print(x.flatten('F'),'\n')

x.flatten()[1] = 20
print(x,'\n')
x.ravel()[1] = 20
print(x,'\n')
x.reshape(1,-1) # 注意结果仍然是二维
print(x,'\n')

x = np.array([1,2,3,6,7,8]) # 注意操作的是数组,即原x是数组
x[None,:] # 转成行向量(二维矩阵)
print(x)
x[:,None] # 转成列向量(二维矩阵)
print(x)
x[np.newaxis, :] # np.newaxis与None用法一致
print(x)
x[:, np.newaxis]
print(x)

# np.prod() 计算元素乘积
x = np.array([[1,2,3],[2,3,4]])
print(np.prod(x))
print(np.prod(x,axis=1))
print(np.prod(x,axis=0))

# 把矩阵大于或小于N的元素置M的技巧
x = np.array([[1,2,3],[-3,2,4],[5,-2,9]])
y1 = np.maximum(0,x) # 把小于0的元素置0,并改变x的值 同x[x < 0] = 0
print(y1,'\n')
y2 = np.minimum(0,x) # 把大于0的元素置0,不改变x的值 同x[x > 0] = 0
print(y2,'\n')

# numpy中的矩阵copy问题
x = np.array([[1,2,3],[-3,2,4],[5,-2,9]])
x1 = x.copy() # copy(),开辟新地址
x1[x1 > 0] = 0
print(x1)

x2 = x # 直接等于,未开辟新地址,x2与x相关联
x2[x2>0] = 0
print(x2)
x=np.array([[ 0, 0, 0],
[-3, 0, 0],
[ 0, -2, 0]]) # x也改变

x = np.array([[1,2,3],[-3,2,4],[5,-2,9]])
x3 = x[2] # 取x的第3行
print(x3)

x3[2] = 100 # 将x3第3个元素置100
print(x3) # x中对应的元素置也被置成100了

# np.zeros_like()构造全零矩阵,无需指定大小

x = np.array([[1,2,3],[4,5,6]])
print(np.zeros_like(x)) # 生成一个和x大小相同的全零矩阵

# random.rand和random.rand和random.randint区别
# 产生随机浮点数
n = np.random.rand(3,4)
print(n)
#生成正态分布矩阵
x = np.random.randn(2,3)
print(x)
y = np.multiply(0.1,np.random.randn(2,3))+0.5 # 一般正态分布
print(y)
#生成离散均匀分布的整数值组成的矩阵
z = np.random.randint(2,9,(2,3))
print(z)
m = np.random.randint(9,size = (2,3))
print(m)

#np.pad()函数进行padding操作

A = np.arange(95,99).reshape(2,2)
print(A)
np.pad(A,((3,2),(2,3)),'constant',constant_values = (0,0))
#说明: 在矩阵行的上部分添加3行,下部分添加2行,在列的左部分添加2列,右部分添加3列。
b = np.array([[[1,2],[3,4]],[[3,4],[7,8]],[[4,5],[1,2]]])
print(b)
np.pad(b, ((0,0),(1,1),(1,1)), 'constant', constant_values = 0)

# numpy.empty() 创建指定形状和数据类型且未初始化的数组
x = np.empty([3,2], dtype = int)
print (x)

# 判断两个矩阵元素完全相等&&存在相等
a = np.array([[1,2,3],[1,2,3]])
b = np.array([[1,2,3],[1,2,3]])
c = np.array([[1,4,3],[1,2,3]])
print((a==b).all()) # 是否完全相等 True
print((a==c).all()) # False
print((a==c).any()) # 是否存在元素相等 True

# np.full 用于形成元素全为某元素的矩阵
c = np.array([[1,2],[3,4]])
print(c)
c.astype(np.float32)
print(c)

# np.meshgrid() 快速生成网格
x = np.array([1,3,5])
y = np.array([4,6])
XX,YY = np.meshgrid(x,y)
print(XX,'\n\n',YY)

# np.hstack() 和 np.vstack() 用于堆叠矩阵
x = np.array([[3,4,5],[1,3,4]])
y = np.array([[1,1,1],[2,2,2]])
print(np.hstack((x,y))) # 水平堆叠
print(np.vstack((x,y)))# 竖直堆叠

# numpy 取整
a = np.array([0.125,0.568,5.688])
print(np.round(a)) # 四舍五入取整, np.around 和 round 用法一致
print(np.round(a,decimals = 2)) # 四舍五入保留2位小数
print(np.floor(a))# 向下取整
print(np.ceil(a)) # 向上取整

# np.newaxis 在特定位置增加一个维度
c = np.array([1,2,5,4])
print(c[:,np.newaxis])
print(c[np.newaxis,:])

# python 广播机制
a = np.array([[1,2,3,6],[4,5,6,6]])
a1 = a.reshape((1,2,4))
print(a1,'\n')
b = np.array([[3,4,5,6],[1,2,3,4],[4,5,5,5]])
b1 = b.reshape((1,3,4)).transpose((1,0,2))
print(b1,'\n')
print(a1+b1)

D:\工具\python\python.exe C:/Users/Tony/PycharmProjects/pythonProject3/main.py
[[2 2 2 2]
 [2 2 2 2]
 [2 2 2 2]
 [2 2 2 2]]
[[2 2 2 2]
 [2 2 2 2]
 [2 2 2 2]
 [2 2 2 2]] 

[1 2]
[2 2 2] 

[[1 5 1]
 [2 5 2]]
[[ 1  2  3  4]
 [ 9 10 11 12]]
[[ 1  3  4]
 [ 5  7  8]
 [ 9 11 12]]
[ 1  3  4  5  6  7  8  9 10 11 12]
[[ 3  4]
 [ 7  8]
 [11 12]]
>>>>q1>>>>
 [[ 1  2  3  4]
 [ 1  1  1  1]
 [ 5  6  7  8]
 [ 9 10 11 12]]
>>>>q2>>>>
 [[ 1  1  2  3  4]
 [ 1  5  6  7  8]
 [ 1  9 10 11 12]]
>>>>q3>>>>
 [[ 1  2  3  4]
 [ 5  6  7  8]
 [ 9 10 11 12]
 [ 1  1  1  1]]
>>>>m1>>>>
 [[ 1  2  3  4]
 [ 5  6  7  8]
 [ 9 10 11 12]
 [ 1  1  1  1]]
>>>>m2>>>>
 [[ 1  2  3  4  1]
 [ 5  6  7  8  1]
 [ 9 10 11 12  1]]
>>>>m3>>>>
 [ 1  2  3  4  5  6  7  8  9 10 11 12  1  1  1  1]
[6 1 6 6 3] 
 [5 1 4 1 4] 
 [4 5 4 5 0] 
 [2 5 1 3 6] 
 [1 4 2 3 0]
8
[1 2 2]
[0 0 2]
[-10.          -9.59183673  -9.18367347  -8.7755102   -8.36734694
  -7.95918367  -7.55102041  -7.14285714  -6.73469388  -6.32653061
  -5.91836735  -5.51020408  -5.10204082  -4.69387755  -4.28571429
  -3.87755102  -3.46938776  -3.06122449  -2.65306122  -2.24489796
  -1.83673469  -1.42857143  -1.02040816  -0.6122449   -0.20408163
   0.20408163   0.6122449    1.02040816   1.42857143   1.83673469
   2.24489796   2.65306122   3.06122449   3.46938776   3.87755102
   4.28571429   4.69387755   5.10204082   5.51020408   5.91836735
   6.32653061   6.73469388   7.14285714   7.55102041   7.95918367
   8.36734694   8.7755102    9.18367347   9.59183673  10.        ] 
 [ 1.  2.  3.  4.  5.  6.  7.  8.  9. 10.] 
 [1.  1.9 2.8 3.7 4.6 5.5 6.4 7.3 8.2 9.1] 
 (array([ 1. ,  2.8,  4.6,  6.4,  8.2, 10. ]), 1.8)
[1 2 3 4 5 6 1 2 3]
[1 2 3 4 5 6 1 2 3] 

[1 4 1 2 5 2 3 6 3]
[1 4 1 2 5 2 3 6 3] 

[[1 2 3]
 [4 5 6]
 [1 2 3]] 

[[ 1 20  3]
 [ 4  5  6]
 [ 1  2  3]] 

[[ 1 20  3]
 [ 4  5  6]
 [ 1  2  3]] 

[1 2 3 6 7 8]
[1 2 3 6 7 8]
[1 2 3 6 7 8]
[1 2 3 6 7 8]
144
[ 6 24]
[ 2  6 12]
[[1 2 3]
 [0 2 4]
 [5 0 9]] 

[[ 0  0  0]
 [-3  0  0]
 [ 0 -2  0]] 

[[ 0  0  0]
 [-3  0  0]
 [ 0 -2  0]]
[[ 0  0  0]
 [-3  0  0]
 [ 0 -2  0]]
[ 5 -2  9]
[  5  -2 100]
[[0 0 0]
 [0 0 0]]
[[0.04896349 0.18196479 0.99125431 0.67401111]
 [0.38125625 0.7826032  0.76235818 0.32016122]
 [0.06124271 0.84115856 0.63462537 0.4174198 ]]
[[ 1.45276094  0.99459509  1.0835566 ]
 [ 0.10366162 -0.65290653  0.88924267]]
[[0.64448716 0.36942489 0.56809195]
 [0.60097897 0.37759209 0.21714533]]
[[2 5 4]
 [4 4 5]]
[[4 3 8]
 [5 5 0]]
[[95 96]
 [97 98]]
[[[1 2]
  [3 4]]

 [[3 4]
  [7 8]]

 [[4 5]
  [1 2]]]
[[0 0]
 [1 1]
 [1 1]]
True
False
True
[[1 2]
 [3 4]]
[[1 2]
 [3 4]]
[[1 3 5]
 [1 3 5]] 

 [[4 4 4]
 [6 6 6]]
[[3 4 5 1 1 1]
 [1 3 4 2 2 2]]
[[3 4 5]
 [1 3 4]
 [1 1 1]
 [2 2 2]]
[0. 1. 6.]
[0.12 0.57 5.69]
[0. 0. 5.]
[1. 1. 6.]
[[1]
 [2]
 [5]
 [4]]
[[1 2 5 4]]
[[[1 2 3 6]
  [4 5 6 6]]] 

[[[3 4 5 6]]

 [[1 2 3 4]]

 [[4 5 5 5]]] 

[[[ 4  6  8 12]
  [ 7  9 11 12]]

 [[ 2  4  6 10]
  [ 5  7  9 10]]

 [[ 5  7  8 11]
  [ 8 10 11 11]]]

进程已结束,退出代码0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值