当前位置: 首页 > 面试题库 >

如何在没有循环的情况下在特定位置修改二维numpy数组?

翟源
2023-03-14
问题内容

我有一个二维的numpy数组,我有一个行和列的数组,应该将其设置为特定值。让我们考虑以下示例

 a = array([[1, 2, 3],
            [4, 5, 6],
            [7, 8, 9]])

我想修改行[0,2]和列[1,2]的条目。这应该导致以下数组

 a = array([[1, 2, 0],
           [4, 5, 0],
           [7, 8, 9]])

我做了以下操作,它导致修改了每一行中列的每个序列

rows = [0,1]
cols = [2,2]
b=a[numpy.ix_(rows,columns)]

结果导致以下数组修改了指定数组的每一列

array([[1, 0, 0],
       [4, 5, 6],
       [7, 0, 0]])

有人可以让我知道怎么做吗?

非常感谢

编辑:要注意的是,行和列碰巧是偶然的。 实际的观点是,这些可以是任意的,也可以是任意顺序。如果它是rows = [a,b,c]和cols =
[nxz],那么我想在位置(a,n),(b,x),(c,z)上精确地修改三个元素。


问题答案:

除了其他人所说的之外,您还可以使用花式索引来修改这些元素,如下所示:

In [39]: rows = [0,1]

In [40]: cols = [2,2]

In [41]: a = np.arange(1,10).reshape((3,3))

In [42]: a[rows,cols] = 0

In [43]: a
Out[43]: 
array([[1, 2, 0],
       [4, 5, 0],
       [7, 8, 9]])

您可能需要阅读有关对多维数组建立索引的文档:http :
//docs.scipy.org/doc/numpy/user/basics.indexing.html#indexing-多维数组


关键点是:

如果索引数组具有匹配的形状,并且要索引的数组的每个维度都有一个索引数组,则结果数组的形状与索引数组的形状相同,并且值对应于为索引中每个位置设置的索引数组。

重要的是,这还允许您执行以下操作:

In [60]: a[rows,cols] = np.array([33,77])

In [61]: a
Out[61]: 
array([[ 1,  2, 33],
       [ 4,  5, 77],
       [ 7,  8,  9]])

您可以在其中使用相同大小的另一个数组,列表或元组独立设置每个元素。



 类似资料:
  • 问题内容: 假设我有以下多维数组(从MySQL或服务检索): 我们可以在一个“ 内置 ” php函数调用中获得一组s 吗?或一行代码? 我知道传统的循环并获得价值,但是我不需要这个: 也许有些和可以做的魔力。 问题答案: 从php 5.5开始,您可以使用: 这是任何现代项目的首选选项。但是,如果必须支持php <5.5,则存在以下替代方法: 从php 5.3开始,您可以使用匿名函数,如下所示: 在

  • 我想为OpenComputers(minecraft mod)编写一个曼卡拉游戏,它使用Lua。然而,曼卡拉要求必须进入它中间的主循环(六个可供选择的壶),退出中间的循环(把你的最后一个石头放入空壶),从循环内部进入循环(把最后一个石头放入壶中,必须从那个壶中捡起所有的石头)。 我可以很容易地在两边做曼卡拉,用一个boolean值和一个if语句。 对于不熟悉曼卡拉的人,我有一个快速的流程图来解释我

  • 问题内容: 我正在尝试设置spring xml配置,而不必创建进一步的。但是,即使我将数据库属性包括在 spring.xml: 我在这里想念什么? 问题答案: 在entityManagerFactory bean定义中指定“ packagesToScan”和“ persistenceUnitName”属性。 请注意,这适用于Spring版本> 3.1

  • 用户应该输入一个4位数的数字,我需要反向它我导入扫描并收到了来自用户的答案,但是如何反向呢?例如,如果用户键入9876,它将打印6789?我应该用%吗?

  • 我正在玩grpc 有人成功使用进行生产吗?我们需要包括特使在内的所有依赖项吗?

  • 我已经挣扎了几天了。我对Spring Boot还是个新手,喜欢不使用XML配置的想法。 我创建了一个RESTfull应用程序(使用JSON)。我正在按照本教程正确配置身份验证。 可以使用 元素上的entry-point-ref属性设置AuthenticationEntryPoint。 没有提到任何关于如何使用Java配置来实现它的内容。 那么如何在不使用XML的情况下“注册”自己的以防止在使用Fo