Numpy学习笔记
Numpy基础
Numpy的数组类也叫ndarray,也就是大家所熟悉的array;
ndarray对象有几个重要的属性如下:
ndarray.ndim:数组的维度(秩)
ndarray.shape:数组的(行数,列数)
ndarray.size:数组中元素的个数
ndarray.dtype:返回数组的类型
ndarray.itemsize:数组中每个元素的字节大小
-
ndarray.data:包含实际数组元素的缓冲区
import numpy as np b = np.arange(15).reshape(3, 5) print(b) print(b.shape) print(b.ndim) print(b.dtype) print(b.dtype.name) print(b.itemsize) print(b.size) print(type(b))
输出结果:
[[ 0 1 2 3 4]
[ 5 6 7 8 9]
[10 11 12 13 14]]
(3, 5)
2
int64
int64
8
15
<class 'numpy.ndarray'>
创建数组
一维数组
# 一维整型数组
a = np.array([2, 3, 4])
print(a)
print(a.dtype)
# 一维浮点型数组
b = np.array([2.3, 3.5, 4.3])
print(b)
print(b.dtype)
输出结果:
[2 3 4]
int64
[ 2.3 3.5 4.3]
float64
二维数组
# 二维整型数组
c = np.array([(1.5, 2, 3), (4, 5, 6)])
print(c)
# 二维复数数组
d = np.array([(1, 2, 3), (2, 3, 4)], dtype=complex)
print(d)
输出结果:
[[ 1.5 2. 3. ]
[ 4. 5. 6. ]]
[[ 1.+0.j 2.+0.j 3.+0.j]
[ 2.+0.j 3.+0.j 4.+0.j]]
零数组
f = np.zeros((3, 4))
print(f)
输出结果:
[[ 0. 0. 0. 0.]
[ 0. 0. 0. 0.]
[ 0. 0. 0. 0.]]
未初始化的数组
h = np.empty((2, 3))
print(h)
输出结果:
[[ -3.10503618e+231 -3.10503618e+231 2.22829633e-314]
[ 2.23386673e-314 2.22830807e-314 4.17203582e-309]]
特殊数组的其他写法
# 一维数组
aa = np.arange(10)
print(aa)
# 二维数组
ab = np.arange(10).reshape(2, 5)
print(ab)
# 三维数组
abc = np.arange(24).reshape(2, 3, 4)
print(abc)
数字序列
i = np.arange(10, 30, 5)
print(i)
j = np.arange(0, 2, 0.3)
print(j)
k = np.linspace(0, 2, 9)
print(k)
l = np.linspace(0, np.pi, 5)
print(l)
m = np.sin(np.pi/6)
print(m)
输出结果:
[10 15 20 25]
[ 0. 0.3 0.6 0.9 1.2 1.5 1.8]
[ 0. 0.25 0.5 0.75 1. 1.25 1.5 1.75 2. ]
[ 0. 0.78539816 1.57079633 2.35619449 3.14159265]
0.5
数组运算
ba = np.array([(1, 2, 3, 4)])
bb = np.arange(4)
print(ba + bb) # 矩阵加法
print(ba - bb) # 矩阵减法
print(ba * 2) # 矩阵树乘
print(ba ** 2) # 矩阵的
print(ba ** 3)
print(10 * np.sin(ba))
print(ba < 2.5)
输出结果:
[[1 3 5 7]]
[[1 1 1 1]]
[[2 4 6 8]]
[[ 1 4 9 16]]
[[ 1 8 27 64]]
[[ 8.41470985 9.09297427 1.41120008 -7.56802495]]
[[ True True False False]]
bc = np.array([(1, 2), (3, 4)])
bd = np.array([(5, 6), (7, 8)])
print(bc * bd) # 矩阵的乘积
print(bc.dot(bd)) # 矩阵积
print(np.dot(bc, bd)) # 矩阵积另一种表示方法
print(bc.sum()) # 所有数之和
print(bc.sum(axis=0)) # sum of each col 每列的和
print(bc.sum(axis=1)) # sum of each col 每行的和
print(bc.min()) # 阵列里最小的值
print(bc.min(axis=0)) # 每列的最小值
print(bc.min(axis=1)) # 每行的最小值
print(bc.max()) # 阵列里最大的值
print(bc.max(axis=0)) # 每列的最大值
print(bc.max(axis=1)) # 每行的最大值
print(bc.cumsum(axis=0)) # 按列累计
print(bc.cumsum(axis=1)) # 按行累计
输出结果:
[[ 5 12]
[21 32]]
[[19 22]
[43 50]]
[[19 22]
[43 50]]
10
[4 6]
[3 7]
1
[1 2]
[1 3]
4
[3 4]
[2 4]
[[1 2]
[4 6]]
[[1 3]
[3 7]]
通用函数
A = np.array([(9, 0, 4)])
B = np.array([(3, 4, 5)])
print(A)
print(np.exp(A)) # 返回x的指数,e的x次方
print(np.sqrt(A)) # 开方
print(np.add(A, B)) # 相加
print(np.all(A)) #
print(np.any(A))