python3-Numpy的基础运算

前言:

学习环境:mac + python3

1、numpy的安装

mac中numpy的安装,终端输入:
pip3 install numpy

2、numpy的一些属性

Numpy 最核心且最重要的一个特性就是 ndarray 多维数组对象,它区别于 python 的标准类,拥有对高维数组的处理能力,这也是数值计算过程中缺一不可的重要特性。

numpy是基于矩阵的运算,我们可以通过numpy构建一个矩阵,然后输出这个矩阵的各种属性:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import numpy as np
#创建一个两行三列的矩阵
array = np.array([ [1,2,3],
[4,5,6]])
'''输出矩阵:
[[1 2 3]
[4 5 6]]
'''
print(array)
#输出矩阵的大小 :6
print(array.size)
#输出矩阵的维数,两行所以是二维 :2
print(array.ndim)
#输出矩阵的形状,即几行几列 :(2,3)
print(array.shape)

3、numpy中创建数组(矩阵)的几种方式

3.1 列表或元组创建

1
2
3
4
5
6
7
8
9
10
11
12
13
array = np.array([[1, 2, 3],
[4, 5, 6]])
print(array)
结果:[[1 2 3]
[4 5 6]]

c = np.array([(1, 2),
(3, 4),
(5, 6)])
print(c)
结果:[[1 2]
[3 4]
[5 6]]

3.2 zeros方法创建

1
2
3
4
5
6
# 创建一个3行4列的全是0的矩阵
a = np.zeros((3, 4))
print(a)
结果:[[0. 0. 0. 0.]
[0. 0. 0. 0.]
[0. 0. 0. 0.]]

3.3 ones方法创建

1
2
3
4
5
6
# 创建一个3行4列的全是1的矩阵,数据类型为int64
b = np.ones((3, 4), dtype=np.int64)
print(b)
结果:[[1 1 1 1]
[1 1 1 1]
[1 1 1 1]]

3.4 arange方法创建

除了直接使用 array 方法创建 ndarray,在 numpy 中还有一些方法可以创建一些有规律性的多维数。首先,我们来看一看 arange()。arange() 的功能是在给定区间内创建一系列均匀间隔的值。方法如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 创建一个从0-11的线性数组
d = np.arange(12)
print(d)
结果:[ 0 1 2 3 4 5 6 7 8 9 10 11]

# 创建一个0-11的矩阵,且塑造其shape
e = np.arange(12).reshape((3,4))
print(e)
结果:
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]

# 在区间10-20中以2作为间隔创建
f = np.arange(10, 20, 2)
print(f)
结果:[10 12 14 16 18]

3.5 linspace创建

在某个区间内自动创建几段的数组

1
2
3
4
# 在区间1-10中创建一个5段的数组
g = np.linspace(1, 10, 5)
print(g)
结果:[ 1. 3.25 5.5 7.75 10. ]

4、 numpy的基本运算

4.1 + - 法运算

1
2
3
4
5
6
7
a = np.array([10, 20, 30, 40])
b = np.arange(4)
c = a+b #c = a-b
print(a, b, c)
结果:
[10 20 30 40] [0 1 2 3] [10 21 32 43]
[10 20 30 40] [0 1 2 3] [10 19 28 37]

4.2 n次方运算

1
2
3
4
b = np.arange(4)
d = b**2
print(d)
结果:[0 1 4 9]

4.3 三角函数运算

1
2
3
b = np.arange(4)
e = np.sin(b)
cos、tan类似

4.4 判断大小运算

1
2
3
4
5
6
f = np.arange(4)
print(f)
print(f<3)
结果:[0 1 2 3]
[ True True True False]
类似还有==、>

4.5 矩阵的乘法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
g = np.array([[1, 1],
[0, 1]])
h = np.arange(4).reshape(2, 2)

data = g*h # 对应位置元素逐个相乘
data_true = np.dot(g, h) # 矩阵乘法运算
data_true = g.dot(h) # 与矩阵运算相同
print(data)
print(data_true)

结果:[[0 1]
[0 3]]
[[2 4]
[2 3]]

4.6 求sum、min、max

1
2
3
4
5
6
7
a = np.random.random(2, 4) # 随机生成一个2行4列的0-1内数字组成的矩阵

print(np.sum(a))
print(np.min(a))
print(np.max(a))
print(np.sum(a, axis = 0)) # 求每一列的sum
print(np.min(a, axis = 1)) # 求每一行的min

4.7 求索引值

1
2
3
4
i = np.arange(2, 14).reshape(3, 4)
print(np.argmax(i)) # 输出最大值的索引: 11

print(np.argmax(i)) # 输出最小值的索引: 0

4.8 求平均值

1
2
3
4
print(i.mean())  # 三种输出平均值的方法
print(np.mean(i))
print(np.arange(i))
print(np.median(i)) # 输出中位数

4.9 cumsum、diff、sort

1
2
3
print(np.cumsum(i))  # 生成一个12位大小的数组,第i个元素是前i个元素的和
print(np.diff(i)) # 生成一个3行3列的数组,每个元素是对应位置前后两元素的差
print(np.sort(i)) # 对数组进行排序

4.10 转置运算+clip

1
2
3
4
print(np.transpose(i))  # 对矩阵进行转置运算的两种方法
print(i.T)

print(np.clip(i, 5, 9)) #将i中的大于9的数都赋值为9,小于5的数赋值为5
-------------The End-------------
谢谢大锅请我喝杯阔乐~