如何为索引数组赋值

时间:2017-10-23 12:29:15

标签: python arrays numpy

array([[1, 2, 3],
       [4, 5, 6],
       [7, 8, 9]])

我想要

[1,2
 4,5
 7,8] 

ndarray [:] [0:2]

它得到了

array([[1, 2, 3],
      [4, 5, 6]])   

为什么!?

3 个答案:

答案 0 :(得分:0)

ndarray[:]返回一个相同的数组,当您使用[0:2]时,它返回一个包含前2个元素的arry,因此[[1,2,3],[4,5,6]]

您要做的是:ndarray[0:3,0:2]或更简单的ndarray[:,:2]

这将返回一个切片的二维切片

答案 1 :(得分:0)

ndarray [:]给出整个数组,并使用下面的[0:2]选择它的前两个元素,即[1,2,3]和[4,5,6]。 / p>

您需要在第一个括号中切片(如DavidG已建议的那样)以获得所有需要的尺寸:

ndarray [:,0:2]

P.S。:请将您的标题更改为更接近您问题的内容。

答案 2 :(得分:0)

您的代码:

import numpy as np

a = np.array([[1, 2, 3],
       [4, 5, 6],
       [7, 8, 9]])

print(a[:])

输出:与a相同,因为您选择了所有行:

  

[[1 2 3] [4 5 6] [7 8 9]]

然后对其进行索引将对结果应用索引,所有行(即a[:][0:2]等同于a[0:2] - 选择前两行)

选择前两列:

print(a[:, 0:2])

输出(如预期):

  

[[1 2] [4 5] [7 8]]

我建议您浏览Numpy的索引文档:https://docs.scipy.org/doc/numpy/user/basics.indexing.html