使用Numpy而不在数组中获得额外的尺寸

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Numpy而不在数组中获得额外的尺寸相关的知识,希望对你有一定的参考价值。

我开始使用Numpy,并且尝试使用其中的一些功能来填充一个二维正方形矩阵,其中所有行的总和为1。这已经完成了到目前为止我打算做的事情,但是,此代码以前有几处引人注意的地方,使我可以更改一维数组的列表。这种解决方案感觉不太优雅-清晰地编写此代码的最佳实践是什么?

import numpy as np


    class Markov:

        def __init__(self, states=5):
            self.prob_dist = []
            print(self.prob_dist)
            for i in range(states):
                change_prob = [1 for x in range(states)]
                print(change_prob)
                self.prob_dist.append(list(np.random.dirichlet(change_prob, size=1)[0]))
            print(self.prob_dist)


def main():
    output = Markov()


if __name__ == '__main__':
    main()
答案

首先创建所需大小的随机矩阵。在您的情况下为5x5,因为您有5种状态:

A = np.random.random((5, 5))

然后对其进行归一化,以使每一列的总和为1:

B = A / A.sum(axis = 0)

然后转置它,以便每一行总计为1:

B = B.T

以上是关于使用Numpy而不在数组中获得额外的尺寸的主要内容,如果未能解决你的问题,请参考以下文章

将尺寸为nx1的numpy数组转换为尺寸为nx10的numpy数组[重复]

更改不在索引列表中的 NumPy 数组的值

Cython:从参考获得时,Numpy 数组缺少两个第一个元素

两个不同 Numpy 数组中的点之间的最小欧几里得距离,不在

这是在一行代码中向 numpy 数组添加额外维度的最佳方法吗?

有啥方法可以将 numpy 数组连接到内存之外(在磁盘上)?