【发布时间】:2020-02-11 21:48:20
【问题描述】:
对于我必须为 CodeSignal 再次编写的函数,我使用 numpy 创建了一个名为“result”的“空”矩阵。在 for 循环过程中,我想将 1 添加到此零矩阵的某些元素:
matrix = [[True, False, False],
[False, True, False],
[False, False, False]]
matrix = np.array(matrix) ## input matrix
(row, col) = matrix.shape
result = np.zeros((row,col), dtype=int) ## made empty matrix of same size
for i in range(0, row):
for j in range(0, col):
mine = matrix[i,j],[i,j]
if mine[0] == True: ##for indices in input matrix where element is called True..
result[i+1,j+1][i+1,j+1] = 1 ##..replace neighbouring elements with 1 (under construction ;) )
print(result)
我的第一个问题来自最后一部分,用另一个值替换 给定索引 的元素。 例如。结果[1,1][1,1] = 1 我总是得到错误
TypeError: 对象不支持项目分配
这发生在将 np.zeros 设置为各种对象类型之后 - int32、int8、complex、float64...
如果我尝试:
例如结果[1,1][1,1] == 1
我明白了:
IndexError: 标量变量的索引无效。
那么在特定位置向 2d np 数组更改或添加元素的方法是什么?
【问题讨论】:
-
你为什么在这里写两次
[i+i,j+1]?请注意,min在这里是一个 2 元组。
标签: python arrays numpy matrix