python 矩阵_用Python处理矩阵

这是MATLAB语法,而不是numpy:

A = [1 0 0 2; 3 3 3 2; 3 3 0 2; 3 4 4 4]

尽管np.matrix用以下命令模拟它:

In [172]: A = np.matrix('1 0 0 2; 3 3 3 2; 3 3 0 2; 3 4 4 4')

In [173]: A

Out[173]:

matrix([[1, 0, 0, 2],

[3, 3, 3, 2],

[3, 3, 0, 2],

[3, 4, 4, 4]])

您的任务是2折,找到最常见的元素,然后替换所有其他元素.动作都不取决于矩阵是2d,还是矩阵而不是数组.

In [174]: A1=A.A1

In [175]: A1

Out[175]: array([1, 0, 0, 2, 3, 3, 3, 2, 3, 3, 0, 2, 3, 4, 4, 4])

np.unique可以为我们提供频率计数,因此我们可以使用来对最频繁的值进行罚款(unique需要1d):

In [179]: u,c = np.unique(A1, return_counts=True)

In [180]: u

Out[180]: array([0, 1, 2, 3, 4])

In [181]: c

Out[181]: array([3, 1, 3, 6, 3])

In [182]: np.argmax(c)

Out[182]: 3

In [183]: u[np.argmax(c)]

Out[183]: 3

我很惊讶Divakar使用scipy模式而不是唯一模式.他是使用唯一性方面的专家. ?

Divakar对np.where的使用可能是执行替换的最简单方法.

只是为了好玩,这是一种蒙版数组方法:

In [196]: np.ma.MaskedArray(A, A!=3)

Out[196]:

masked_matrix(data =

[[-- -- -- --]

[3 3 3 --]

[3 3 -- --]

[3 -- -- --]],

mask =

[[ True True True True]

[False False False True]

[False False True True]

[False True True True]],

fill_value = 999999)

In [197]: _.filled(0)

Out[197]:

matrix([[0, 0, 0, 0],

[3, 3, 3, 0],

[3, 3, 0, 0],

[3, 0, 0, 0]])

或就地更改:

In [199]: A[A!=3] = 0

In [200]: A

Out[200]:

matrix([[0, 0, 0, 0],

[3, 3, 3, 0],

[3, 3, 0, 0],

[3, 0, 0, 0]])

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值