Python numpy中2d数组选定元素的矢量化赋值语句

Python numpy中2d数组选定元素的矢量化赋值语句,python,arrays,numpy,indexing,vectorization,Python,Arrays,Numpy,Indexing,Vectorization,我是python的初学者。我想知道是否有一种不使用for循环的“好”方法来执行此操作。 考虑这个问题 u = zeros((4,2)) u_pres = array([100,200,300]) row_col_index = array([[0,0,2], [0,1,1]]) 我想将u[0,0]、u[0,1]和u[2,1]分别指定为100200和300。 我想做一些形式上的事情 u[row_col_index] = u_pres 如果你是一个一维数组,那么这样的赋值是可行的,但我无法弄清楚

我是python的初学者。我想知道是否有一种不使用for循环的“好”方法来执行此操作。 考虑这个问题

u = zeros((4,2))
u_pres = array([100,200,300])
row_col_index = array([[0,0,2], [0,1,1]])
我想将u[0,0]、u[0,1]和u[2,1]分别指定为100200和300。 我想做一些形式上的事情

u[row_col_index] = u_pres
如果你是一个一维数组,那么这样的赋值是可行的,但我无法弄清楚如何使它适用于二维数组。 你的建议将非常有用。 谢谢

你就快到了

您需要的是以下内容:

u[行列索引[0],行列索引[1]=u压力
说明:

既然你说你是Python的初学者(我也是!),我想我可以告诉你这一点;可以按照您的方式加载模块:

#坏
从numpy进口*
#好
从numpy导入数组#或您需要的任何内容
#好
将numpy作为np导入#如果您需要很多东西,这会更好
说明:

[18]中的
u=np.零(10)
In[19]:u
Out[19]:数组([0,0,0,0,0,0,0,0,0,0,0.]))
#一维赋值
In[20]:u[0]=1
In[21]:u[1]=10
[22]中:u[-1]=9#最后一个元素
在[23]中:u[-2]=np.pi#倒数第二个元素
In[24]:u
出[24]:
数组([1,10,0,0.],
0.        ,   0.        ,   0.        ,   0.        ,
3.14159265,   9.        ])
[25]:u形
Out[25]:(10,)
在[27]:u[9]#呼叫
Out[27]:9.0
#2D案例
在[28]中:y=np.零((4,2))
In[29]:y
出[29]:
数组([[0,0.],
[ 0.,  0.],
[ 0.,  0.],
[ 0.,  0.]])
在[30]:y[1]=10中,这将指定所有第二行为10
In[31]:y
出[31]:
数组([[0,0.],
[ 10.,  10.],
[  0.,   0.],
[  0.,   0.]])
[32]:y[0,1]=9#现在这是2D赋值,我们使用2个索引!
在[33]中,y[3]=np.pi#all第4行,与y[3,:]类似,“:”表示全部
在[34]:y[2,1]#第3行第2列中
Out[34]:0.0
In[36]:y[2,1]=7
在[37]中:
In[37]:y
出[37]:
数组([[0,9.],
[ 10.        ,  10.        ],
[  0.        ,   7.        ],
[  3.14159265,   3.14159265]])
在您的例子中,我们有用于行的
行列索引的第一个数组(
行列索引[0]
),以及用于列的第二个数组(
行列索引[1]

最后,如果您不使用,我建议您使用,它将在学习过程中和其他许多方面帮助您


我希望这能有所帮助。

感谢您提供的详细答案和最佳实践提示。我一直试图将row\u col\u索引数组作为一个整体进行索引,但没有提取行。不客气。你能选择这个作为正确答案吗。