numpy 2

本文详细介绍NumPy库的基础用法,包括基本数组操作、数学函数应用、矩阵运算及聚合操作等。通过实例展示如何利用NumPy高效地进行科学计算。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

给定一个数组,让数组中每一个数乘以2

In [ ]:
n = 10
L = [i for i in range(n)]
In [ ]:
2 * L
In [ ]:
A = []
for e in L:
    A.append(2*e)
In [ ]:
n = 1000000
L = [i for i in range(n)]
In [ ]:
%%time
A = []
for e in L:
    A.append(2*e)
In [ ]:
%%time
A = [2*e for e in L]
In [ ]:
import numpy as np
L = np.arange(n)
In [ ]:
%%time
A = np.array(2*e for e in L)
In [ ]:
%%time
A = 2 * L
In [ ]:
n = 10
L = np.arange(n)
2 * L

NumPy’s UFuncs (Universal Functions)

In [ ]:
X = np.arange(1, 16).reshape((3, 5))
X
In [ ]:
X + 1
In [ ]:
X - 1
In [ ]:
X * 2
In [ ]:
X / 2
In [ ]:
X // 2
In [ ]:
X ** 2
In [ ]:
X % 2
In [ ]:
1 / X
In [ ]:
np.abs(X)
In [ ]:
np.sin(X)
In [ ]:
np.cos(X)
In [ ]:
np.tan(X)
In [ ]:
np.arctan(X)
In [ ]:
np.exp(X)
In [ ]:
np.exp2(X)
In [ ]:
np.power(3, X)
In [ ]:
np.log(X)
In [ ]:
np.log2(X)
In [ ]:
np.log10(X)

矩阵运算

In [ ]:
A = np.arange(4).reshape(2, 2)
A
In [ ]:
B = np.full((2, 2), 10)
B
In [ ]:
A + B
In [ ]:
A - B
In [ ]:
A * B
In [ ]:
A.dot(B)
In [ ]:
A.T
In [ ]:
C = np.full((3, 3), 666)
In [ ]:
A + C
向量和矩阵的运算
加法
In [ ]:
v = np.array([1, 2])
In [ ]:
v + A

v + A 是可以的,但是在这个课程中,我们不研究其中的计算法则。有兴趣的同学可以查询资料自学numpy.array的broadcast

In [ ]:
np.vstack([v] * A.shape[0])
In [ ]:
np.vstack([v] * A.shape[0]) + A
In [ ]:
np.tile(v, (2, 1))
In [ ]:
np.tile(v, (2, 1)) + A
In [ ]:
np.tile(v, (2, 2))
乘法
In [ ]:
v * A
In [ ]:
v.dot(A)
In [ ]:
A.dot(v)

矩阵的逆

In [ ]:
np.linalg.inv(A)
In [ ]:
invA = np.linalg.inv(A)
In [ ]:
A.dot(invA)
In [ ]:
invA.dot(A)
In [ ]:
X = np.arange(16).reshape((2, 8))
In [ ]:
invX = np.linalg.inv(X)
矩阵的伪逆
In [ ]:
pinvX = np.linalg.pinv(X)
pinvX
In [ ]:
X.dot(pinvX)

矩阵的伪逆又被称为“广义逆矩阵”: https://zh.wikipedia.org/wiki/%E5%B9%BF%E4%B9%89%E9%80%86%E9%98%B5


Numpy 中的聚合操作

sum

In [ ]:
import numpy as np

L = np.random.random(100)
sum(L)
In [ ]:
np.sum(L)
In [ ]:
big_array = np.random.rand(1000000)
%timeit sum(big_array)
%timeit np.sum(big_array)

min, max

In [ ]:
np.min(big_array)
In [ ]:
np.max(big_array)
In [ ]:
big_array.min()
In [ ]:
big_array.max()
In [ ]:
big_array.sum()

多维度聚合

In [ ]:
X = np.arange(16).reshape(4,-1)
X
In [ ]:
np.sum(X)
In [ ]:
np.sum(X, axis=0)
In [ ]:
np.sum(X, axis=1)

注意:axis描述的是将要被压缩的维度。

其他聚合操作

In [ ]:
np.prod(X)
In [ ]:
np.prod(X + 1)
In [ ]:
np.mean(X)
In [ ]:
np.median(X)
In [ ]:
v = np.array([1, 1, 2, 2, 10])
np.mean(v)
In [ ]:
np.median(v)
In [ ]:
np.percentile(big_array, q=50)
In [ ]:
np.median(big_array)
In [ ]:
np.percentile(big_array, q=100)
In [ ]:
np.max(big_array)
In [ ]:
for percent in [0, 25, 50, 75, 100]:
    print(np.percentile(big_array, q=percent))
In [ ]:
np.var(big_array)
In [ ]:
np.std(big_array)
In [ ]:
x = np.random.normal(0, 1, 1000000)
In [ ]:
np.mean(x)
In [ ]:
np.std(x)

Numpy 中arg运算

In [ ]:
import numpy as np
In [ ]:
x = np.random.normal(0, 1, 1000000)

索引

In [ ]:
np.argmin(x)
In [ ]:
x[886266]
In [ ]:
np.min(x)
In [ ]:
np.argmax(x)
In [ ]:
x[4851]
In [ ]:
np.max(x)

排序和使用索引

In [ ]:
x = np.arange(16)
x
In [ ]:
np.random.shuffle(x)
x
In [ ]:
np.sort(x)
In [ ]:
x
In [ ]:
x.sort()
In [ ]:
x
In [ ]:
X = np.random.randint(10, size=(4,4))
X
In [ ]:
np.sort(X, axis=0)
In [ ]:
np.sort(X, axis=1)
使用索引
In [ ]:
x
In [ ]:
np.random.shuffle(x)
In [ ]:
x
In [ ]:
np.argsort(x)
In [ ]:
np.partition(x, 3)
In [ ]:
np.argpartition(x, 3)
In [ ]:
X
In [ ]:
np.argsort(X, axis=1)
In [ ]:
np.argpartition(X, 2, axis=1)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值