【发布时间】:2018-03-06 16:05:37
【问题描述】:
我有以下矩阵:
a = array([
[100. , 100., 100.],
[175.2, 198., 32.],
[ 38. , 82. , 38.],
[155. , 32. , 23.],
[ 38. , 67. , 30.]])
如果一行的数字不等于 38 和 32,我如何将所有行中的数字更改为零,但最后一行除外?我想得到如下:
a = array([
[ 0 , 0 , 0 ],
[ 0 , 0 , 32.],
[38., 0 , 38.],
[ 0 , 32., 0 ],
[38., 67., 30.]])
然后我想只留下每列中出现的最早的数字。像这样的:
a = array([
[ 0 , 0 , 0 ],
[ 0 , 0 , 32.],
[38., 0 , 0 ],
[ 0 , 32., 0 ],
[ 0 , 0 , 0 ]])
【问题讨论】:
-
你试图做什么?发布您修改数组的尝试,然后我们可以帮助您找出您做错了什么
-
Nitpick:这是一个数组,而不是矩阵。一般来说,这是一个重要的区别,因为 NumPy 确实 有一个
matrix类型,它不同于(但继承自)ndarray数组类型。 -
对不起,你是对的。我尝试使用此评论 a[np.any(a != 38, axis=1)] = 0,但它给出的是它将所有内容都变为零,我不知道如何强加 - “将数字变为零如果数字不等于 38 或 32",则在除最后一行之外的所有行中
标签: python arrays python-3.x numpy