我编写了以下代码来创建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)
答案 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)