当前位置:   article > 正文

Numpy——numpy的基本运算_numpy运算

numpy运算

1.初始化两个矩阵

import numpy as np
a=np.array([11,22,33,44,55,66])   
b=np.arange(6)

print(a)
print(b) 
#输出
[11 22 33 44 55 66]
[0 1 2 3 4 5]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

上述代码中的 a 和 b 是两个属性为 array 也就是矩阵的变量,而且二者都是1行6列的矩阵, 其中b矩阵中的元素分别是从0到5。

2.矩阵加法

c = a + b
print(c)

#输出
[11 23 35 47 59 71]
  • 1
  • 2
  • 3
  • 4
  • 5

3.矩阵减法

d = a - b
print(d)

#输出
[11 21 31 41 51 61]
  • 1
  • 2
  • 3
  • 4
  • 5

4.矩阵乘法

e = a * b
print(e)

#输出
[  0  22  66 132 220 330]
  • 1
  • 2
  • 3
  • 4
  • 5

5.矩阵的乘方

f = a**2
print(f)

#输出
[ 121  484 1089 1936 3025 4356]
  • 1
  • 2
  • 3
  • 4
  • 5

6.矩阵的三角函数

g = 2*np.sin(a)
print(g)
h = 2*np.cos(a)
print(h)

#输出
[-1.99998041 -0.01770262  1.99982372  0.03540385 -1.99951035 -0.05310231]
[ 0.0088514  -1.99992165 -0.02655349  1.99968662  0.04425351 -1.99929491]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

7.矩阵的逻辑运算

print(a < 50)
print(a == 44)

#输出
[ True  True  True  True False False]
[False False False  True False False]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

8.二维矩阵计算

上述运算均是建立在一维矩阵,即只有一行的矩阵上面的计算,如果我们想要对多行多维度的矩阵进行操作,可以在上面做一些改动。

a = np.array([[11,22,33],[44,55,66]])
b = np.arange(6).reshape((3,2))
print(a)
print(b)

#输出
[[11 22 33]
 [44 55 66]]
[[0 1]
 [2 3]
 [4 5]]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

此时构造出来的矩阵a和b便是2行3列的,其中 reshape 操作是对矩阵的形状进行重构, 其重构的形状便是括号中给出的数字。 稍显不同的是,Numpy中的矩阵乘法分为两种, 其一是前文中的对应元素相乘,其二是标准的矩阵乘法运算,即对应行乘对应列得到相应元素

c_dot = np.dot(a,b)
print(c_dot)
d_dot = a.dot(b)
print(d_dot) 

#输出
[[176 242]
 [374 539]]
[[176 242]
 [374 539]]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

9.sum(), min(), max()的使用

import numpy as np
a=np.random.random((3,5))
print(a)

#输出
[[0.94004266 0.06821417 0.53298969 0.37368218 0.98274263]
 [0.22059055 0.9521291  0.12160635 0.50142968 0.08024663]
 [0.6041042  0.41411029 0.84898433 0.73680101 0.92060592]]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

上面是随机生成数字, 所以你的结果可能会不一样. 在第二行中对a的操作是令a中生成一个3行5列的矩阵,且每一元素均是来自从0到1的随机数

sum = np.sum(a)
print(sum)
min = np.min(a)
print(min)
max = np.max(a)
print(max)

#输出
8.298279370480403
0.06821416737474717
0.982742627864798
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

对应的便是对矩阵中所有元素进行求和,寻找最小值,寻找最大值的操作。 可以通过print()函数对相应值进行打印检验

10.行和列的查找运算

如果你需要对行或者列进行查找运算,就需要在上述代码中为 axis 进行赋值。 当axis的值为0的时候,将会以列作为查找单元, 当axis的值为1的时候,将会以行作为查找单元。

sum_hang = np.sum(a, axis = 1)
print(sum_hang)
min_lie = np.min(a, axis = 0)
print(min_lie)
max_hang = np.max(a, axis = 1)
print(max_hang)

#输出
[2.89767132 1.87600231 3.52460575]
[0.22059055 0.06821417 0.12160635 0.37368218 0.08024663]
[0.98274263 0.9521291  0.92060592]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

11.最大值、最小值的索引

日常使用中,对应元素的索引也是非常重要的.其中的 argmin() 和 argmax() 两个函数分别对应着求矩阵中最小元素和最大元素的索引

A = np.array([[11,22,33,44,55],[55,44,33,22,11],[0,22,44,66,88],[11,33,55,77,99]])
print(A)
print(np.argmin(A))
print(np.argmax(A))
  • 1
  • 2
  • 3
  • 4

12.均值、平均值、中位数

A = np.array([[11,22,33,44,55],[55,44,33,22,11],[0,22,44,66,88],[11,33,55,77,99]])
print(A)
print(np.mean(A))
print(np.average(A))
print(A.mean())     #这种方法也可以,同理内积
print(np.median(A))
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

13.累加、累差

和matlab中的cumsum()累加函数类似,Numpy中也具有cumsum()函数,
在cumsum()函数中:生成的每一项矩阵元素均是从原矩阵首项累加到对应项的元素之和。
【注】diff()函数计算的便是每一行中后一项与前一项之差。故一个4行5列矩阵通过函数计算得到的矩阵便是4行4列的矩阵。

A = np.array([[11,22,33,44,55],[55,44,33,22,11],[0,22,44,66,88],[11,33,55,77,99]])
print(A)
print(np.cumsum(A))
print(np.diff(A))
  • 1
  • 2
  • 3
  • 4

14.排序

我们可以对所有元素进行仿照列表一样的排序操作,但这里的排序函数仍然仅针对每一行进行从小到大排序操作

A = np.array([[11,22,33,44,55],[55,44,33,22,11],[0,22,44,66,88],[11,33,55,77,99]])
print(A)
print(np.sort(A))
  • 1
  • 2
  • 3

15.转置

矩阵的转置有两种表示方法:

A = np.array([[11,22,33,44,55],[55,44,33,22,11],[0,22,44,66,88],[11,33,55,77,99]])
print(A)
print(np.transpose(A))
print(A.T)
  • 1
  • 2
  • 3
  • 4

16.clip()函数

这个函数的格式是clip(Array,Array_min,Array_max),顾名思义,Array指的是将要被执行用的矩阵,而后面的最小值最大值则用于让函数判断矩阵中元素是否有比最小值小的或者比最大值大的元素,并将这些指定的元素转换为最小值或者最大值。

A = np.array([[11,22,33,44,55],[55,44,33,22,11],[0,22,44,66,88],[11,33,55,77,99]])
print(A)
print(np.clip(A,44,77))   #小于44的都为44,大于77的都为77,其它照写
  • 1
  • 2
  • 3
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/620017
推荐阅读
  

闽ICP备14008679号