简短问题-这是在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;
}
答案 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))