numpy数组中的二维矩阵如何定义轴?

问题描述 投票:2回答:1

我最近学习了NumPy数组,我很困惑axis=0和axis=1代表什么?我在互联网上搜索了一下,发现axis=0代表行,axis=1代表列,但是当我开始做一些练习的时候,我就困惑了,在两个不同的函数np.delete()和np.sum()中,轴的工作方式有什么不同?

 #input

import numpy as np
arr = np.array([(1,2,3,4),(5,6,7,8),(9,10,11,12)])
print(arr)
print(np.sum(arr,0)[1])

#output

 [[ 1  2  3  4]
  [ 5  6  7  8]
  [ 9 10 11 12]]
 18    

如果axis=0代表行,那么应该添加第二行(索引1的行),即5+6+7+8。

而不是增加第二列,即2+6+10。

但当我使用 np.delete()

   #input

   print(np.delete(arr,2,0))

   #output

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

这里是删除第三行(索引2的行)。

在第一种情况下,axis=0作为列工作,而在第二种情况下,它作为行工作。

你能告诉我我错在哪里吗?

python arrays numpy delete-row
1个回答
1
投票

这是你对行column操作的思考角度问题。请看下图(源头):

enter image description here

根据 numpy.sumజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజ axis 参数代表 "执行和的轴"。编写 numpy.sum(arr, axis=0) 译为 沿着每行(0轴)加号。. 结果是每列的总和,但操作是按行进行的----。每行.

文件中的 numpy.delete 说明 axis 参数代表 "删除子数组的轴"。编写 numpy.delete(arr, 2, axis=0) 途径 从行(0轴)的角度删除第三个元素(index=2)。.

这不是一个不一致的问题:这两个 numpy.sumnumpy.deleteaxis=0 作用于行(第0索引)。前者是将所有行的元素相加,而后者则是删除特定行的元素。

© www.soinside.com 2019 - 2024. All rights reserved.