王尘宇王尘宇

研究百度干SEO做推广变成一个被互联网搞的人

Pandas从入门到精通(1)- 基础

Pandas从入门到精通(1)- 基础

image.png

一般的矩阵乘法根据公式,可以由三重循环写出:

Pandas从入门到精通(1)- 基础

image.png

使用列表推导式来替代for循环完成

# 先定义零个矩阵
M1 = np.random.randint(1,10,10).reshape(2,5)
M2 = np.random.randint(1,10,10).reshape(5,2)
print(M1)
print('-' * 5)
print(M2)
M1@M2 # 矩阵乘法
>>>
[[6 1 2 8 5]
 [6 1 7 9 4]]
-----
[[6 2]
 [7 7]
 [1 4]
 [7 1]
 [8 3]]
array([[141,  50],
       [145,  68]])
# 使用列表推导式来完成
[[sum([M1[i][k] * M2[k][j] for k in range(M1.shape[1])]) for j in range(M2.shape[1])] for i in range(M1.shape[0])]
>>>
[[141, 50], [145, 68]]
  1. 更新矩阵
    设矩阵 Am×n ,现在对 A 中的每一个元素进行更新生成矩阵 B ,更新方法是

    Pandas从入门到精通(1)- 基础

    image.png

例如下面的矩阵为 A ,则 =5×(1/4+1/5+1/6)=37/12 ,请利用 Numpy 高效实现。

Pandas从入门到精通(1)- 基础

image.png

解答:

A = np.arange(1,10).reshape(3,3)
B = A*(1/A).sum(1).reshape(-1,1)

Pandas从入门到精通(1)- 基础

image.png

使用内置的函数

B = A.sum(0) * A.sum(1).reshape(-1,1) / A.sum()
print(B)
res = ((A-B) ** 2 / B).sum()
print(res)

参考:开源内容Joyful Pandas, 作者 DataWhale耿远昊
另外,更多精彩内容也可以微信搜索,并关注公众号:‘Python数据科学家之路“ ,期待您的到来和我交流

相关文章

评论列表

发表评论:
验证码

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。