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

将值分配给Numpy数组中的不同索引位置

颛孙镜
2023-03-14
问题内容

说我有一个数组

np.zeros((4,2))

我有一个值[4,3,2,1]的列表,我想分配给以下位置:[(0,0),(1,1),(2,1),(3,0) ]

如何不使用for循环或展平数组来做到这一点?

我可以使用花哨的索引来检索值,但不能分配它们。

======更新=========

感谢@hpaulj,我意识到原始代码中的错误是。

当我使用zeros_like初始化数组时,它默认为int并截断值。因此,看来我没有分配任何东西!


问题答案:

您可以使用元组索引

>>> import numpy as np
>>> a = np.zeros((4,2))
>>> vals = [4,3,2,1]
>>> pos = [(0,0),(1,1),(2,0),(3,1)]
>>> rows, cols = zip(*pos)
>>> a[rows, cols] = vals
>>> a
array([[ 4.,  0.],
       [ 0.,  3.],
       [ 2.,  0.],
       [ 0.,  1.]])


 类似资料:
  • 问题内容: 这给出了预期的结果 这有效 但是如果我们将其更改为 我收到“ TypeError:无法将复数转换为浮点数”。 如果现在我们省略显式的,我将得到“ ValueError:设置具有序列的数组元素”。 有人可以解释发生了什么,以及如何做到无误吗?我迷路了。 问题答案: 要插入complex或in ,您显然需要将其视为数组,因此可以将其索引或分配给的一个切片: 看来NumPy无法正确处理这种情

  • 问题内容: 我想在numpy数组中设置特定值(以将它们从按行均值计算中排除)。 我试过了 看着,我只会看到我的期望。 我想到了一个替代方案: 没发生什么事。我究竟做错了什么? 问题答案: 将适当元素设置为NaN的矢量化方法 @unutbu的解决方案必须摆脱您得到的值错误。如果您希望获得性能,可以这样使用- 样品运行- 向量化方法可直接计算适当元素的按行平均值 如果要获取掩盖的平均值,则可以修改较早

  • 问题内容: 我有一个像这样的NumPy数组: 我知道我可以使用例如花式索引来替换位于位置的值: 但是,如何替换不在的位置的值?像下面这样吗? 问题答案: 我不知道这样做的干净方法: 当然,如果您更喜欢使用numpy数据类型,则可以使用-输出不会有任何差异。确实,这只是一个偏好问题。

  • 我有一个numpy数组,一个定义数组中范围的开始/结束索引列表,以及一个值列表,其中值的数量与范围的数量相同。在循环中执行此赋值当前非常慢,因此我想以矢量化的方式将值赋给数组中的相应范围。这可能吗? 这是一个具体的简化示例: <代码>a=np。零([10]) 下面是定义a中范围的开始索引和结束索引列表,如下所示: 这是我想分配给每个范围的值列表: <代码>值=[1、2、3、4] 我有两个问题。首先

  • 问题内容: 在Python中,我们可以使用来获取数组中值的索引。 但是,当我尝试执行NumPy数组时: 我得到: AttributeError:“ numpy.ndarray”对象没有属性“ index” 我如何在NumPy数组上执行此操作? 问题答案: 使用来获得,其中一个给定的条件是指数。 例子: 对于称为的2D : 对于一维数组: 请注意,这也适用于像条件,,等等… 您也可以使用方法创建的子

  • 问题内容: 原始问题 当我尝试分配数组的某些元素时,我收到一条非常奇怪的错误消息。我正在使用切片和一组索引的组合。请参阅以下简单示例。 此代码引发以下内容: ValueError:形状不匹配:形状(3,4)的值数组无法广播到形状(3,4)的索引结果 - 跟进 将slice和seq组合使用时要小心。整数 正如在github上指出的: 这是numpy设计的工作方式,但是x [0] [:, I]与x [