前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【数据分析与可视化】数组与矩阵运算

【数据分析与可视化】数组与矩阵运算

作者头像
瑞新
发布2020-07-07 20:16:20
6010
发布2020-07-07 20:16:20
举报

快速创建数组

代码语言:javascript
复制
import numpy as np
代码语言:javascript
复制
# 返回符合正态分布的数组
np.random.randn(10)
代码语言:javascript
复制
array([-0.05382978,  0.57450604,  0.08319436, -1.54601915,  0.6517896 ,
       -1.31985884, -0.68791036,  2.4913952 ,  0.31322135,  0.83022095])
代码语言:javascript
复制
# 返回指定范围的一个随机数
np.random.randint(10)
代码语言:javascript
复制
9
代码语言:javascript
复制
# 创建一个随机数组
np.random.randint(10, size=20)
代码语言:javascript
复制
array([9, 4, 1, 2, 3, 3, 3, 2, 4, 0, 8, 8, 7, 6, 3, 8, 7, 4, 3, 3])
代码语言:javascript
复制
# 一维变二维 数组
np.random.randint(10, size=20).reshape(4, 5)
代码语言:javascript
复制
array([[3, 0, 6, 1, 2],
       [3, 3, 4, 4, 9],
       [6, 2, 6, 2, 5],
       [0, 9, 1, 6, 9]])
代码语言:javascript
复制
np.random.randint(10, size=(2,3))
代码语言:javascript
复制
array([[3, 8, 9],
       [5, 1, 2]])

数组运算

代码语言:javascript
复制
# 范围为10,长度size
a = np.random.randint(10, size=20).reshape(4,5)
a
代码语言:javascript
复制
array([[3, 2, 8, 8, 8],
       [9, 4, 1, 4, 4],
       [5, 4, 6, 6, 3],
       [6, 5, 7, 3, 1]])
代码语言:javascript
复制
b = np.random.randint(10, size=20).reshape(4,5)
b
代码语言:javascript
复制
array([[4, 2, 0, 6, 9],
       [3, 3, 0, 2, 1],
       [0, 8, 7, 7, 1],
       [0, 2, 2, 7, 8]])
代码语言:javascript
复制
# 数组加法
a + b
代码语言:javascript
复制
array([[ 7,  4,  8, 14, 17],
       [12,  7,  1,  6,  5],
       [ 5, 12, 13, 13,  4],
       [ 6,  7,  9, 10,  9]])
代码语言:javascript
复制
# 数组减法
a - b
代码语言:javascript
复制
array([[-1,  0,  8,  2, -1],
       [ 6,  1,  1,  2,  3],
       [ 5, -4, -1, -1,  2],
       [ 6,  3,  5, -4, -7]])
代码语言:javascript
复制
# 数组乘法-对应相乘
a * b
代码语言:javascript
复制
array([[12,  4,  0, 48, 72],
       [27, 12,  0,  8,  4],
       [ 0, 32, 42, 42,  3],
       [ 0, 10, 14, 21,  8]])
代码语言:javascript
复制
# 数组除法-对应相除(除数不能为0,否则为inf提示报错)
a / b 
代码语言:javascript
复制
/Users/bennyrhys/opt/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:2: RuntimeWarning: divide by zero encountered in true_divide






array([[0.75      , 1.        ,        inf, 1.33333333, 0.88888889],
       [3.        , 1.33333333,        inf, 2.        , 4.        ],
       [       inf, 0.5       , 0.85714286, 0.85714286, 3.        ],
       [       inf, 2.5       , 3.5       , 0.42857143, 0.125     ]])
代码语言:javascript
复制
# 创建矩阵(matrix标记)
np.mat([[1,2,3],[4,5,6]])
代码语言:javascript
复制
matrix([[1, 2, 3],
        [4, 5, 6]])
代码语言:javascript
复制
a
代码语言:javascript
复制
array([[3, 2, 8, 8, 8],
       [9, 4, 1, 4, 4],
       [5, 4, 6, 6, 3],
       [6, 5, 7, 3, 1]])
代码语言:javascript
复制
# 数组转矩阵
np.mat(a)
代码语言:javascript
复制
matrix([[3, 2, 8, 8, 8],
        [9, 4, 1, 4, 4],
        [5, 4, 6, 6, 3],
        [6, 5, 7, 3, 1]])

矩阵的运算

代码语言:javascript
复制
A = np.mat(a)
B = np.mat(b)
代码语言:javascript
复制
A
代码语言:javascript
复制
matrix([[3, 2, 8, 8, 8],
        [9, 4, 1, 4, 4],
        [5, 4, 6, 6, 3],
        [6, 5, 7, 3, 1]])
代码语言:javascript
复制
B
代码语言:javascript
复制
matrix([[4, 2, 0, 6, 9],
        [3, 3, 0, 2, 1],
        [0, 8, 7, 7, 1],
        [0, 2, 2, 7, 8]])
代码语言:javascript
复制
A - B
代码语言:javascript
复制
matrix([[-1,  0,  8,  2, -1],
        [ 6,  1,  1,  2,  3],
        [ 5, -4, -1, -1,  2],
        [ 6,  3,  5, -4, -7]])
代码语言:javascript
复制
A + B
代码语言:javascript
复制
matrix([[ 7,  4,  8, 14, 17],
        [12,  7,  1,  6,  5],
        [ 5, 12, 13, 13,  4],
        [ 6,  7,  9, 10,  9]])
代码语言:javascript
复制
# 矩阵相乘(A列=B行才可以)
A * B
代码语言:javascript
复制
---------------------------------------------------------------------------

ValueError                                Traceback (most recent call last)

<ipython-input-43-38f193791a6b> in <module>
      1 # 矩阵相乘(A列=B行才可以)
----> 2 A * B


~/opt/anaconda3/lib/python3.7/site-packages/numpy/matrixlib/defmatrix.py in __mul__(self, other)
    218         if isinstance(other, (N.ndarray, list, tuple)) :
    219             # This promotes 1-D vectors to row vectors
--> 220             return N.dot(self, asmatrix(other))
    221         if isscalar(other) or not hasattr(other, '__rmul__') :
    222             return N.dot(self, other)


<__array_function__ internals> in dot(*args, **kwargs)


ValueError: shapes (4,5) and (4,5) not aligned: 5 (dim 1) != 4 (dim 0)
代码语言:javascript
复制
# 范围为10,长度size
a = np.mat(np.random.randint(10, size=20).reshape(4,5))
a
代码语言:javascript
复制
matrix([[0, 2, 0, 8, 1],
        [9, 0, 8, 1, 4],
        [5, 2, 1, 1, 1],
        [6, 0, 2, 9, 7]])
代码语言:javascript
复制
b = np.mat(np.random.randint(10, size=20).reshape(5,4))
b
代码语言:javascript
复制
matrix([[3, 8, 0, 8],
        [2, 2, 6, 6],
        [7, 4, 0, 3],
        [9, 6, 5, 5],
        [1, 5, 5, 0]])
代码语言:javascript
复制
a * b
代码语言:javascript
复制
matrix([[ 77,  57,  57,  52],
        [ 96, 130,  25, 101],
        [ 36,  59,  22,  60],
        [120, 145,  80,  99]])

Array常用函数

代码语言:javascript
复制
a = np.random.randint(10, size=20).reshape(4,5)
a
代码语言:javascript
复制
array([[6, 8, 8, 4, 2],
       [1, 8, 8, 0, 8],
       [3, 5, 3, 6, 0],
       [7, 5, 9, 3, 7]])
代码语言:javascript
复制
# 返回当前数组元素的唯一值
np.unique(a)
代码语言:javascript
复制
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
代码语言:javascript
复制
# 列求和
sum(a)
代码语言:javascript
复制
array([17, 26, 28, 13, 17])
代码语言:javascript
复制
# 第一行求和
sum(a[0])
代码语言:javascript
复制
28
代码语言:javascript
复制
# 第一列的和
sum(a[:,0])
代码语言:javascript
复制
17
代码语言:javascript
复制
# 最大值第一行
max(a[0])
代码语言:javascript
复制
8
代码语言:javascript
复制
# 最大值第一列
max(a[:,0])
代码语言:javascript
复制
7
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-04-15 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 快速创建数组
  • 数组运算
  • 矩阵的运算
  • Array常用函数
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档