创建包含零的numpy的nxn矩阵的最快方法

时间:2018-12-08 23:07:38

标签: python numpy matrix

简短问题-这是在python和numpy中用零创建16x16(或nxn)矩阵的最快方法吗?

public static boolean equals(int[][] one, int[][] two) {
    if (one == null || two == null || one.length != two.length)
        return false;

    for (int row = 0; row < one.length; row++) {
        if (one[row].length != two[row].length)
            return false;

        for (int col = 0; col < one[row].length; col++)
            if (one[row][col] != two[row][col])
                return false;
    }

    return true;
}

2 个答案:

答案 0 :(得分:4)

加快创建此矩阵的最佳方法是完全跳过listener, err := net.ListenTCP("tcp",tcpAddr) if err != nil { return "", err } defer listener.Close() file, err := listener.File() --> unix supports file descriptor / how about in windows ?? if err != nil { return "", err } 类,而仅使用matrix

np.zeros

不使用a = np.zeros((16, 16)) 可以使速度提高10倍:

matrix

numpy.matrix has been deprecated

  

注意   即使对于线性代数,也不再建议使用此类。而是使用常规数组。该类将来可能会被删除。

编辑:Paul Panzer在评论中链接了一个不错的discussion about the reasons behind matrix's deprecation

人们使用%%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) 而不是matrix的常见原因是array将执行矩阵乘法(而不是成对乘法,就像标准a * b一样) s)。但是,您现在可以使用闪亮的新矩阵乘法运算符array来轻松使用标准数组执行矩阵乘法:

@

输出:

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

答案 1 :(得分:2)

跳过matrix并直接使用它:

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