加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 使用包含零的numpy创建nxn矩阵的最快方法[复制]

发布时间:2020-12-20 11:08:35 所属栏目:Python 来源:网络整理
导读:参见英文答案 Create Multidimensional Zeros Python????????????????????????????????????4个 简短的问题 – 这是在python中用零创建16×16(或nxn)矩阵的最快方法numpy的? a = np.matrix(np.zeros((16,16),dtype = np.int)) 解决方法 加速创建此矩阵的最佳
参见英文答案 > Create Multidimensional Zeros Python????????????????????????????????????4个
简短的问题 – 这是在python&中用零创建16×16(或nxn)矩阵的最快方法numpy的?

a = np.matrix(np.zeros((16,16),dtype = np.int))

解决方法

加速创建此矩阵的最佳方法是完全跳过使用矩阵类并使用np.zeros:

a = np.zeros((16,16))

跳过矩阵的使用可以获得10倍的加速:

%%timeit
a = np.matrix(np.zeros((16,16)))
4.95 μs ± 50.5 ns per loop (mean ± std. dev. of 7 runs,100000 loops each)

%%timeit
a = np.zeros((16,16))
495 ns ± 2.18 ns per loop (mean ± std. dev. of 7 runs,1000000 loops each)

numpy.matrix has been deprecated:

Note
It is no longer recommended to use this class,even for linear algebra. Instead use regular arrays. The class may be removed in the future.

编辑:Paul Panzer在评论中链接了一个很好的discussion about the reasons behind matrix‘s deprecation.

人们使用矩阵而不是数组的一个常见原因是a * b将执行矩阵乘法(而不是成对乘法,就像标准数组一样).但是,您现在可以使用闪亮的新矩阵乘法运算符@来使用标准数组轻松执行矩阵乘法:

a = np.arange(2*2).reshape(2,2)
b = np.arange(2*2,2*2*2).reshape(2,2)
print('an%sn' % a)
print('bn%sn' % b)
print('a * b (pairwise multiplication)n%sn' % (a * b))
print('a @ b (matrix multiplication)n%sn' % (a @ b))

输出:

a
[[0 1]
 [2 3]]

b
[[4 5]
 [6 7]]

a * b (pairwise multiplication)
[[ 0  5]
 [12 21]]

a @ b (matrix multiplication)
[[ 6  7]
 [26 31]]

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读