使用for循环填充numpy中的2D矩阵

时间:2016-10-24 19:37:40

标签: python matlab numpy

我是试图切换到Python的Matlab用户。

使用Numpy,如何在for循环中填写矩阵?

例如,矩阵有2列,for循环的每次迭代都会添加一行新数据。

在Matlab中,这将是:

n = 100;
matrix = nan(n,2); % Pre-allocate matrix
for i = 1:n
    matrix(i,:) = [3*i, i^2];
end

2 个答案:

答案 0 :(得分:10)

首先你必须使用

安装numpy
$ pip install numpy

然后以下内容应该有效

import numpy as np    
n = 100
matrix = np.zeros((n,2)) # Pre-allocate matrix
for i in range(1,n):
    matrix[i,:] = [3*i, i**2]

更快的替代方案:

col1 = np.arange(3,3*n,3)
col2 = np.arange(1,n)
matrix = np.hstack((col1.reshape(n-1,1), col2.reshape(n-1,1)))

更快,正如Divakar建议的那样

I = np.arange(n)
matrix = np.column_stack((3*I, I**2))

答案 1 :(得分:1)

这是一种非常Python化的形式,用于产生列表,您可以轻松地交换例如用于np.array,集合,生成器等。

n = 10

[[i*3, i**2] for i, i in zip(range(0,n), range(0,n))]

如果要添加另一列,那没问题。只是

[[i*3, i**2, i**(0.5)] for i, i in zip(range(0,n), range(0,n))]