带有numpy的2D数组

时间:2015-02-02 06:13:26

标签: python numpy

我编写了以下代码来创建2D数组并归档每行的第一个元素。我是numpy的新手。有更好的方法吗?

y=np.zeros(N*T1).reshape(N,T1)
x = np.linspace(0,L,num = N)

for k in range(0,N):
    y[k][0] = np.sin(PI*x[k]/L)

2 个答案:

答案 0 :(得分:3)

是的,因为numpy矢量化操作,您可以这样做:

y[:,0] = np.sin(np.pi * x / L)

请注意,y[:,0]抓取y的第一列(第一个坐标中的:实际上意味着"抓住所有行",然后抓住第二个中的0坐标是指索引0和#34;(即第一列)的列。由于np.sin(np.pi * x / L)也是一个数组,因此您可以直接将后者分配给前者。

答案 1 :(得分:2)

这个问题更适用于codereview @ stackexchange,但这个代码段有效!

import numpy as np

N = 1000 # arbitrary
T1 = 1000 # arbitrary
L = 10 # arbitrary

x = np.linspace(0,L,num = N)

# you don't need reshape here, give the size as a tuple!
y = np.zeros((N,T1)) 

# use a vectorized call here:
y[:,0] = np.sin(np.pi*x/L)