numpy:分配和索引为Matlab

numpy:分配和索引为Matlab,第1张

numpy:分配和索引为Matlab

您可以尝试numpy.ndarray.flat,它表示可用于读取和写入数组的迭代器。

>>> M = zeros((4,4))>>> M.flat[::5] = 1>>> print(M)array([[ 1.,  0.,  0.,  0.],       [ 0.,  1.,  0.,  0.],       [ 0.,  0.,  1.,  0.],       [ 0.,  0.,  0.,  1.]])

请注意,在numpy中,切片语法为[start:stop_exclusive:step],而不是Matlab的语法(start:step:stop_inclusive)。

根据sebergs的评论,可能需要指出Matlab将矩阵存储在列主行中,而numpy数组默认是行主行。

>>> M = zeros((4,4))>>> M.flat[:4] = 1>>> print(M)array([[ 1.,  1.,  1.,  1.],       [ 0.,  0.,  0.,  0.],       [ 0.,  0.,  0.,  0.],       [ 0.,  0.,  0.,  0.]])

为了在扁平化的数组上获得类似于Matlab的索引,您将需要扁平化转置的数组:

>>> M = zeros((4,4))>>> M.T.flat[:4] = 1>>> print(M)array([[ 1.,  0.,  0.,  0.],       [ 1.,  0.,  0.,  0.],       [ 1.,  0.,  0.,  0.],       [ 1.,  0.,  0.,  0.]])


欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/zaji/5648401.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存