相关疑难解决方法(0)

NumPy使用索引列表选择每行的特定列索引

我很难选择NumPy矩阵每行的特定列.

假设我有以下矩阵,我会称之为X:

[1, 2, 3]
[4, 5, 6]
[7, 8, 9]
Run Code Online (Sandbox Code Playgroud)

我还会list调用每行的列索引Y:

[1, 0, 2]
Run Code Online (Sandbox Code Playgroud)

我需要获取值:

[2]
[4]
[9]
Run Code Online (Sandbox Code Playgroud)

取而代之的是list使用索引Y,我还可以产生一个矩阵具有相同的形状X,每一个列是bool/ int范围在0-1之间的值,表明这是否是必需的列.

[0, 1, 0]
[1, 0, 0]
[0, 0, 1]
Run Code Online (Sandbox Code Playgroud)

我知道这可以通过迭代数组并选择我需要的列值来完成.但是,这将在大数据阵列上频繁执行,这就是它必须尽可能快地运行的原因.

我想知道是否有更好的解决方案?

谢谢.

python numpy python-2.7

69
推荐指数
4
解决办法
3万
查看次数

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

我有一个2D numpy数组,我有一个行和列的数组,应该设置为一个特定的值.让我们考虑以下示例

 a = array([[1, 2, 3],
            [4, 5, 6],
            [7, 8, 9]])
Run Code Online (Sandbox Code Playgroud)

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

 a = array([[1, 2, 0],
           [4, 5, 0],
           [7, 8, 9]])
Run Code Online (Sandbox Code Playgroud)

我做了以下操作,结果修改了每一行中的每个列序列

rows = [0,1]
cols = [2,2]
b=a[numpy.ix_(rows,columns)]
Run Code Online (Sandbox Code Playgroud)

它导致以下数组修改指定数组的每一列

array([[1, 0, 0],
       [4, 5, 6],
       [7, 0, 0]])
Run Code Online (Sandbox Code Playgroud)

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

非常感谢

编辑:需要注意的是,行和列恰好发生在顺序上.实际的一点是,这些可以是任意的,也可以是任何顺序.如果是rows = [a,b,c]和cols = [nxz],那么我想在位置(a,n),(b,x),(c,z)处准确修改三个元素.

python numpy

28
推荐指数
1
解决办法
5万
查看次数

选择列中每行的前 N ​​个元素

我希望选择 a 列和 b 列中每行的前两个元素。

这是一个例子

df = pd.DataFrame({'a': ['A123', 'A567','A100'], 'b': ['A156', 'A266666','A35555']})

>>> df
      a        b
0  A123     A156
1  A567  A266666
2  A100   A35555
Run Code Online (Sandbox Code Playgroud)

期望的输出

>>> df
      a      b
0     A1     A1
1     A5     A2
2     A1     A3
Run Code Online (Sandbox Code Playgroud)

我一直在尝试使用df.loc但没有成功。

python pandas

3
推荐指数
1
解决办法
1260
查看次数

Numpy 数组:具有随机关系的行/列明智 argmax

这是我在 Python 2.7 中尝试使用 Numpy 做的事情。a假设我有一个由以下内容定义的数组:

a = np.array([[1,3,3],[4,5,6],[7,8,1]])
Run Code Online (Sandbox Code Playgroud)

我可以做a.argmax(0)a.argmax(1)获得行/列明智的argmax:

a.argmax(0)
Out[329]: array([2, 2, 1], dtype=int64)
a.argmax(1)
Out[330]: array([1, 2, 1], dtype=int64)
Run Code Online (Sandbox Code Playgroud)

但是,当存在像a第一行那样的平局时,我希望在平局之间随机决定 argmax (默认情况下,只要 argmax 或 argmin 中出现平局,Numpy 就会返回第一个元素)。

去年,有人提出了随机解决 Numpy argmax/argmin 关系的问题:Select One Element in Each Row of a Numpy Array by Column Indices

然而,这个问题针对的是一维数组。在那里,得票最多的答案对此很有效。还有第二个答案,尝试解决多维数组的问题,但不起作用 - 即它不会返回每行/列的最大值的索引,并随机解决关系。

由于我正在使用大数组,因此最有效的方法是什么?

python arrays random numpy argmax

2
推荐指数
1
解决办法
1906
查看次数

标签 统计

python ×4

numpy ×3

argmax ×1

arrays ×1

pandas ×1

python-2.7 ×1

random ×1