NumPy学习笔记

学习NumPy库,把一些重要的或者难的用法记录下来,方便复习。

  1. 从数值范围创建数组
 numpy.arange(start, stop, step, dtype)#参数分别为起始值,终止值,步长和数据类型
  1. 创建等间隔一维数组
np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)#参数分别为起始值,终止值,数据数,是否包含stop值,是否显示间距和数据类型
在这里插入代码片
  1. 使用数字 0 将一个全为 1 的 5x5 二维数组包围
Z = np.ones((5,5))
Z = np.pad(Z, pad_width=1, mode='constant', constant_values=0)
  1. 创建一个 5x5 的二维数组,并设置值 1, 2, 3, 4 落在其对角线下方Z = np.diag(1+np.arange(4),k=-1)
  2. 创建一个 10x10 的二维数组,并使得 1 和 0 沿对角线间隔放置
Z = np.zeros((10,10),dtype=int)
Z[1::2,::2] = 1
Z[::2,1::2] = 1
  1. 创建一个 0-10 的一维数组,并将 (1, 9] 之间的数全部反转成负数
Z = np.arange(11)
Z[(1 < Z) & (Z <= 9)] *= -1
  1. 找出两个一维数组中相同的元素
Z1 = np.random.randint(0,10,10)
Z2 = np.random.randint(0,10,10)
print("Z1:", Z1)
print("Z2:", Z2)
np.intersect1d(Z1,Z2)
  1. 统计数组各行的算术平均值
np.mean(a, axis=1)
  1. 统计数组各列的加权平均值
np.average(a, axis=0)

10.统计中位数,方差,标准差等。
11.沿横 / 纵轴分割数组

np.hsplit(a, 3)
np.vsplit(a, 3)

12.返回每列最大值

np.max(a, axis=0) #行最大值axis = 1
  1. 返回每列最大值索引
np.argmax(a, axis=0) #最小值是argmin函数

14.找出两个一维数组中相同的元素
np.intersect1d(Z1,Z2)
15.使用 NumPy 打印昨天、今天、明天的日期

yesterday = np.datetime64('today', 'D') - np.timedelta64(1, 'D')
today     = np.datetime64('today', 'D')
tomorrow  = np.datetime64('today', 'D') + np.timedelta64(1, 'D')
print("yesterday: ", yesterday)
print("today: ", today)
print("tomorrow: ", tomorrow)

16.数组排序

Z.sort()#升序排序
Z.sort(axis=0)#列升序

17.将 float32 转换为整型

Z = np.arange(10, dtype=np.float32)
Z = Z.astype(np.int32, copy=False)

18.将随机二维数组按照第 3 列从上到下进行升序排列

Z = np.random.randint(0,10,(5,5))#生成一个5行5列数值在0~10之间的数组
Z[Z[:,2].argsort()]

19.交换前两行可以直接这样吗?

A[[0,1]] = A[[1,0]]

20.找出随机一维数组Z中出现频率最高的值

np.bincount(Z).argmax()

21.统计随机数组中的各元素的数量

Z = np.random.randint(0,100,25).reshape(5,5)
np.unique(Z, return_counts=True) # 返回值中,第 2 个数组对应第 1 个数组元素的数量

22.将多个 1 维数组拼合为单个 Ndarray

Z = np.array([Z1, Z2, Z3])
np.concatenate(Z)

23.使用 NumPy 计算变量直接的相关性系数

Z = np.array([
    [1, 2, 1, 9, 10, 3, 2, 6, 7], # 特征 A
    [2, 1, 8, 3, 7, 5, 10, 7, 2], # 特征 B
    [2, 1, 1, 8, 9, 4, 3, 5, 7]]) # 特征 C
np.corrcoef(Z)

24.使用 NumPy 计算矩阵的特征值和特征向量

M = np.matrix([[1,2,3], [4,5,6], [7,8,9]])
w, v = np.linalg.eig(M)
# w 对应特征值,v 对应特征向量

25.打印九九乘法表

np.fromfunction(lambda i, j: (i + 1) * (j + 1), (9, 9))

26.使用 Numpy 将实验楼 LOGO 转换为 Ndarray 数组

from io import BytesIO
from PIL import Image
import PIL, requests

# 通过链接下载图像
URL = 'https://static.shiyanlou.com/img/logo-black.png'
response = requests.get(URL)

# 将内容读取为图像
I = Image.open(BytesIO(response.content))

# 将图像转换为 Ndarray
shiyanlou = np.asarray(I)
shiyanlou
# 将转换后的 Ndarray 重新绘制成图像
from matplotlib import pyplot as plt
%matplotlib inline
plt.imshow(shiyanlou)
plt.show()

27.几个常用的函数

flat #返回

np.nonzero([1,0,2,0,1,0,4,0])#返回一维数组中非 0 元素的位置索引

np.dot(A, B)#矩阵相乘

np.power(x,4)#对x数组的每个值4次方

np.set_printoptions(precision=2)#对于二维随机数组中各元素,保留其 2 位小数

Z/1e3#科学记数法输出 NumPy(Z) 数组

a.argsort()#打印各元素在数组中升序排列的索引

a.real #属性,数组a的实部
a.imag #属性,数组a的虚部

numpy.linalg.inv()# 函数计算矩阵的乘法逆矩阵。

numpy.linalg.solve() #函数给出了矩阵形式的线性方程的解。

umpy.matlib.eye() #函数返回一个矩阵,对角线元素为 1,其他位置为零。

np.c_[M1, M2]#按列连接两个数组
np.r_[M1, M2]#按行连接两个数组

参考:
实验楼NumPy 百题大冲关
NumPy教程

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值