如果我们有一个numpy数组,例如:
Array = np.zeros((2, 10, 10))
我们想要设置一个元素,另一个元素
indexes = np.array([0,0,0])
我们该怎么做?
Array[indexes] = 5
将数组的第一个维度的每个元素设置为5
使用a
as作为数据数组和idx
索引数组,以便每一行对应于要在数据数组中设置的一个元素,您可以执行以下操作-
a[tuple(idx.T)] = 5
样品运行-
In [94]: a = np.zeros((2,2,3),dtype=int)
In [95]: idx = np.array([[0,0,0],[1,1,0],[0,1,2]])
In [96]: a[tuple(idx.T)] = 5
In [97]: a
Out[97]:
array([[[5, 0, 0],
[0, 0, 5]],
[[0, 0, 0],
[5, 0, 0]]])
In [98]: a[tuple(idx.T)] = [5,10,15] # or set different values
In [99]: a
Out[99]:
array([[[ 5, 0, 0],
[ 0, 0, 15]],
[[ 0, 0, 0],
[10, 0, 0]]])
或者,我们可以使用计算线性索引,np.ravel_multi_index
然后使用进行赋值np.put
,就像这样-
np.put(a,np.ravel_multi_index(idx.T,a.shape),5)
如果您要处理三维数组,我们可以对三维索引进行切片,然后分配具有另一种方法,如下所示:
a[idx[:,0],idx[:,1],idx[:,2]] = 5
如果只是需要设置的一个元素,请执行以下操作-
a[tuple(idx)] = 5
样品运行-
In [118]: a = np.zeros((2,2,3),dtype=int)
In [119]: idx = np.array([0,0,0])
In [120]: a[tuple(idx)] = 5
In [121]: a
Out[121]:
array([[[5, 0, 0],
[0, 0, 0]],
[[0, 0, 0],
[0, 0, 0]]])
问题内容: 我有两个NumPy数组,例如: 和一个过滤器数组,例如: 我如何才能得到一个新的numpy数组,其中仅包含其中相同索引为True的值?就我而言:。 根据公认的解决方案(具有不同的值): 问题答案: NumPy支持布尔索引 假设 和是NumPy数组而不是Python列表(如问题所示)。您可以使用进行转换。
问题内容: 我使用Python和NumPy,“移调”有一些问题: 调用不转置数组。例如,如果为,则它正确转置,但我需要的转置。 问题答案: 它的工作完全符合预期。一 维 数组的转置仍然是 一维 数组!(如果您习惯使用matlab,从根本上来说就没有1D数组的概念。Matlab的“ 1D”数组是2D。) 如果要将一维矢量转换为二维数组然后转置,只需对其进行切片(或者,它们是相同的,可读性更高)。 一
问题内容: 从这个问题的答案(使用一个较少的内存,沿着一个特定轴对另一个numpy数组进行排序)中,我学习了如何根据另一个numpy数组的值对多维numpy数组进行排序,而又不创建太多额外的数组。 但是,仅当数组和具有相同形状时才有效。我的数组是一维数组,但数组是ND数组(未指定N)。通过一维数组的值在特定轴上对数组进行排序是一种好方法(高效)吗? 问题答案: 使用与关键字参数: 如果要使用花式索
问题内容: 假设我有; 我尝试转换; 我现在正在vstack上通过迭代来解决它,但是对于特别大的LIST来说确实很慢 您对最佳有效方法有何建议? 问题答案: 通常,您可以沿任意轴连接整个数组序列: 但你 也 必须对列表中的形状和每个阵列的维度担心(用于2维3x5的输出,你需要确保它们都是2维正由-5阵列的话)。如果要将一维数组连接为二维输出的行,则需要扩展其维数。 正如Jorge的答案所指出的那样
问题内容: 如何使用PyTables将numpy多维数组放入HDF5文件中? 据我所知,我不能将数组字段放在pytables表中。 我还需要存储有关此数组的一些信息,并能够对其进行数学计算。 有什么建议? 问题答案: 可能有一种更简单的方法,但是据我所知,这就是您要做的事情: 如果要指定要使用的压缩,请查看。例如 可能有很多更简单的方法……很长一段时间以来,我除了表型数据外没有用过其他任何东西。
问题内容: 我有一个numpy数组,如下所示: 我想将每个元素四舍五入到小数点后两位。 我该怎么办? 问题答案: Numpy提供了两种相同的方法来执行此操作。无论使用 要么 因为它们是等效的。 请参阅文档以获取更多信息。 例子: