python - 使用另一个数组/列表的 Python 索引
问题描述
对不起,如果问题已经回答。我想不出一个术语来搜索这个。
我在列表中有一堆列表坐标,如下所示。
coordinate = [[0,0,0,0], [1,1,1,1,]]
我必须使用它来更改 numpy 数组中的值。(我没有使用 numpy 作为标题,因为它也可以用于普通列表)
要更改 numpy 中的值,我必须运行
array[0,0,0,0]=value
我如何array[0,0,0,0]
从array
和制作[0,0,0,0]
?我知道我如何使用字符串来制作一个看起来像那样的字符串,但是我可以使用该字符串来运行一个函数来分割索引吗?
解决方案
使用测试数组:
In [163]: arr = np.arange(24).reshape(2,3,4)
选择一个项目:
In [168]: arr[0,1,2]
Out[168]: 6
使用索引列表选择相同的项目:
In [169]: idx = [0,1,2]
In [170]: arr[tuple(idx)]
Out[170]: 6
arr[0,1,2]
是隐含的arr[(1,2,3)]
。Python 解释器将这些逗号分隔的索引号作为元组传递给数组的__getitem__
方法。
这种多维索引不适用于列表。
In [171]: alist = arr.tolist()
In [172]: alist[0][1][2]
Out[172]: 6
对于几点:
In [180]: idx = np.array([[0,1,2],[1,2,3]])
In [181]: idx
Out[181]:
array([[0, 1, 2],
[1, 2, 3]])
In [182]: tuple(idx.T)
Out[182]: (array([0, 1]), array([1, 2]), array([2, 3]))
In [183]: arr[tuple(idx.T)]
Out[183]: array([ 6, 23])
实际上,我将 的每一列idx
作为索引数组(对于每个维度)传递。
推荐阅读
- python - 有没有比我目前概述的方法更有效的方法将 JSON 导入 Pandas 数据框?
- r - 在 GWAS/Manhattan 图中无法正确重复颜色——颜色不一致
- javascript - 单击 sweetalert 弹出按钮后执行 PHP 函数
- python - 无法将数据复制到 AWS RedShift
- c++ - imprimircadena 之前的预期初始化程序
- python - 语法错误,但遵循文档,mysql Python
- python - 使用正则表达式提取具有特定字符串的列名
- javascript - 从片段着色器恢复像素数据会导致意外行为
- python - 有没有什么方法可以使用strptime方法在python中减去两个不同的日期
- python - 不断出现的 Telepot 错误