我对python和numpy很陌生。请问有人可以帮助我了解如何对用作索引的某些数组进行索引。我有以下六个2D阵列-
array([[2, 0],
[3, 0],
[3, 1],
[5, 0],
[5, 1],
[5, 2]])
我想将这些数组用作索引,并将值10放入新的空矩阵的相应索引中。输出应如下所示:
array([[ 0, 0, 0],
[ 0, 0, 0],
[10, 0, 0],
[10, 10, 0],
[ 0, 0, 0],
[10, 10, 10]])
到目前为止,我已经尝试过
from numpy import*
a = array([[2,0],[3,0],[3,1],[5,0],[5,1],[5,2]])
b = zeros((6,3),dtype ='int32')
b[a] = 10
但这给了我错误的输出。任何帮助请。
In [1]: import numpy as np
In [2]: a = np.array([[2,0],[3,0],[3,1],[5,0],[5,1],[5,2]])
In [3]: b = np.zeros((6,3), dtype='int32')
In [4]: b[a[:,0], a[:,1]] = 10
In [5]: b
Out[5]:
array([[ 0, 0, 0],
[ 0, 0, 0],
[10, 0, 0],
[10, 10, 0],
[ 0, 0, 0],
[10, 10, 10]])
工作原理:
如果您在工作分配中b
使用 两个 numpy数组建立索引,
b[x, y] = z
然后认为NumPy的作为过的各元件同时移动x
和中的每个元素y
和中的每个元素z
(我们称它们xval
,yval
和zval
),并分配至b
[XVAL,利用yval]的值zval
。当z
为常数时,“z
每次移动仅返回相同的值。
这就是我们想要的,与x
作为第一列a
和y
是第二列a
。因此,选择x = a[:, 0]
和y = a[:, 1]
。
b[a[:,0], a[:,1]] = 10
为什么b[a] = 10
不起作用
当你写b[a]
,认为NumPy的,如通过的每一个元素移动在创造一个新的数组a
,(我们称之为每一个idx
)和新的阵列中放置的价值b[idx]
在的位置idx
中a
。
idx
是中的值a
。所以它是一个int32。 b
形状为(6,3),b[idx]
一行b
形状为(3,)。例如,何时idx
是
In [37]: a[1,1]
Out[37]: 0
b[a[1,1]]
是
In [38]: b[a[1,1]]
Out[38]: array([0, 0, 0])
所以
In [33]: b[a].shape
Out[33]: (6, 2, 3)
因此,让我们再次重申:NumPy的是通过创建的每个元素移动在新的阵列a
和新阵列中放置的价值b[idx]
在的位置idx
中a
。随着idx
移动a
,将创建形状为(6,2)的数组。但是由于b[idx]
形状本身为(3,),因此在(6,2)形数组中的每个位置都放置了(3,)形值。结果是形状(6,2,3)的数组。
现在,当您进行类似
b[a] = 10
b[a]
创建具有值的形状(6,2,3)的临时数组,然后执行分配。由于10是常数,因此此赋值将值10放置在(6,2,3)形数组中的每个位置。然后,将临时数组中的值重新分配给b
。请参阅参考文档。因此,将(6,2,3)形数组中的值复制回(6,3)形b
数组中。值彼此覆盖。但要点是您没有获得所需的任务。
问题内容: 我有一个索引元组数组,我想用它从多维numpy数组中选取值, 理解只有在已知的情况下才有效。 有什么提示吗? 问题答案: 您可以将的转置版本转换为元组,然后为矢量化解决方案建立索引-
问题内容: 假设我们有以下js数组 是否有一个js内置函数或jQuery的一个,使用它可以搜索阵列 AR 的 VAL ? 谢谢 *_ _ _更新 _ _ * _ __** 根据 融合的 反应,我创建了这个原型 问题答案: 您可以创建一个哈希。
我想在这个json数组中搜索特定的标题。但问题是,我想用正则表达式进行搜索。例如:sb搜索“ad”->函数应该返回前两个json字符串(Adjust和Adn)。 我不知道,现在设置一个javascript函数可以实现这一点。 一些想法?
问题内容: 我要寻找一个量化的方式来索引的索引。 例如: 我想建立一个新的数组,以便该数组中的每一行(i)都是array的row(i),并由数组inds(i)的行索引。我想要的输出是: 我可以通过循环来实现: 但我正在寻找一种纯矢量化的解决方案。 问题答案: 使用索引数组对另一个数组进行索引时,每个索引数组的形状应与 输出 数组的形状匹配。您希望列索引匹配,并且您希望行索引匹配输出的行,例如: 由
问题内容: 如何在Elasticsearch中按数组索引查询/过滤? 我有一个像这样的文件: 我想搜索 LIN [0] 是否为“ UP”并且 LIN [1]是否 存在。 谢谢。 问题答案: 这看起来可能像hack,但是可以肯定地起作用。首先,我们将令牌计数类型与多字段一起应用以捕获令牌数量作为字段。因此,映射将如下所示- 链接-http: //www.elasticsearch.org/guide
问题内容: 我有一系列元素。我还有一个IndexSet,它指定需要将数组的哪些索引提取到新数组中。例如: 我正在寻找使用swift 函数的方法,但是还没有答案。我怎样才能做到这一点? 问题答案: 是递增整数的集合,因此可以 将 每个索引 映射 到相应的数组元素: 假定所有索引对于给定数组均有效。如果不能保证,则可以过滤索引(如@dfri正确标记):