我最近学习了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作为列工作,而在第二种情况下,它作为行工作。
你能告诉我我错在哪里吗?
这是你对行column操作的思考角度问题。请看下图(源头):
根据 numpy.sum
జజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజ axis
参数代表 "执行和的轴"。编写 numpy.sum(arr, axis=0)
译为 沿着每行(0轴)加号。. 结果是每列的总和,但操作是按行进行的----。每行.
文件中的 numpy.delete
说明 axis
参数代表 "删除子数组的轴"。编写 numpy.delete(arr, 2, axis=0)
途径 从行(0轴)的角度删除第三个元素(index=2)。.
这不是一个不一致的问题:这两个 numpy.sum
和 numpy.delete
与 axis=0
作用于行(第0索引)。前者是将所有行的元素相加,而后者则是删除特定行的元素。