AF2*_*k15 6 python modeling numpy matrix
我正在为水位表模型设置一些边界条件,我能够将整个第一行设置为常量值,而不是整个第一列.我np.zeros((11, 1001))用来做一个空矩阵.有谁知道为什么我成功定义第一行,但不是第一列?我已经注意到下面的问题.
import numpy as np
x = range(0, 110, 10)
time = range(0, 5005, 5)
xSize = len(x)
timeSize = len(time)
dx = 10
dt = 5
Sy = 0.1
k = 0.002
head = np.zeros((11, 1001))
head[0:][0] = 16 # sets the first row to 16
head[0][0:] = 16 # DOESN'T set the first column to 16
for t in time:
for i in x[1:len(x)-1]:
head[t+1][i] = head[t][i] + ((dt*k)/(2*Sy)) * (((head[t][i-1]**2) - (2*head[t][i]**2) + (head[t][i+1]**2)) / (dx**2))
Run Code Online (Sandbox Code Playgroud)
你所要做的就是改变
head[0][0:]
Run Code Online (Sandbox Code Playgroud)
至
head[:, 0] = 16
Run Code Online (Sandbox Code Playgroud)
如果你想改变你可以做的第一行:
head[0, :] = 16
Run Code Online (Sandbox Code Playgroud)
编辑:
万一你也想知道如何在任意行/列中更改任意数量的值:
myArray = np.zeros((6, 6))
Run Code Online (Sandbox Code Playgroud)
现在我们将第2行中的3个值设置为16:
myArray[2, 1:4] = 16.
array([[ 0., 0., 0., 0., 0., 0.],
[ 0., 0., 0., 0., 0., 0.],
[ 0., 16., 16., 16., 0., 0.],
[ 0., 0., 0., 0., 0., 0.],
[ 0., 0., 0., 0., 0., 0.],
[ 0., 0., 0., 0., 0., 0.]])
Run Code Online (Sandbox Code Playgroud)
列适用于:
myArray[2:5, 4] = -4.
array([[ 0., 0., 0., 0., 0., 0.],
[ 0., 0., 0., 0., 0., 0.],
[ 0., 16., 16., 16., -4., 0.],
[ 0., 0., 0., 0., -4., 0.],
[ 0., 0., 0., 0., -4., 0.],
[ 0., 0., 0., 0., 0., 0.]])
Run Code Online (Sandbox Code Playgroud)
如果您还想同时在两个不同的行中更改某些值,则可以这样做:
myArray[[0, 5], 0:3] = 10.
array([[ 10., 10., 10., 0., 0., 0.],
[ 0., 0., 0., 0., 0., 0.],
[ 0., 16., 16., 16., -4., 0.],
[ 0., 0., 0., 0., -4., 0.],
[ 0., 0., 0., 0., -4., 0.],
[ 10., 10., 10., 0., 0., 0.]])
Run Code Online (Sandbox Code Playgroud)