gpt4 book ai didi

python - 将数据填充到矩阵中,传递其定义的索引遇到 IndexError 的元素

转载 作者:太空宇宙 更新时间:2023-11-04 09:58:39 25 4
gpt4 key购买 nike

为了创建矩阵,我有两个 numpy 数组用于定位行和列

row = np.array([1,5,8,15,2])
column = np.array([2,3,4,7,8])

mymatrix的维度是10*10

mymatrix = np.zeros(shape=(10,10))

我想在行和列数组的定义位置填充 100(按它们的索引配对)。如果索引超出范围(例如 (row=15,column=7)),我只想传递该元素。我用过

try:
mymatrix[row, column] = 100
except IndexError:
pass

但是这就通过了所有的过程,没有元素被填充到矩阵中。我希望它只传递 IndexError 元素。可以这样做吗?

最佳答案

使用有效行和列的掩码并用它来掩码它们并索引到二维数组中,然后用 integer-array indexing 赋值。 .因此,将 rowcolumn 作为数组,我们将有一个这样的解决方案 -

m,n = mymatrix.shape
mask = (row>=0) & (row < m) & (column>=0) & (column < n)
mymatrix[row[mask], column[mask]] = 100

sample 运行-

In [19]: row = np.array([1,5,8,15,2])
...: column = np.array([2,3,4,7,8])
...:

In [20]: mymatrix = np.zeros(shape=(10,10))

In [21]: m,n = mymatrix.shape

In [22]: mask = (row>=0) & (row < m) & (column>=0) & (column < n)

In [23]: mymatrix[row[mask], column[mask]] = 100

In [24]: (mymatrix==100).sum() # number of elements edited to 100
Out[24]: 4

如果rowcolumn保证大于等于0,跳过(row>=0) (column>=0) 部分。

关于python - 将数据填充到矩阵中,传递其定义的索引遇到 IndexError 的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44797254/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com