python中数组的轴_在Python NumPy中,尺寸和轴是什么?

I am coding with Pythons NumPy module. If coordinates of a point in 3D space are described as [1, 2, 1], wouldn't that be three dimensions, three axis, a rank of three? Or if that is one dimension then shouldn't it be points (plural), not point?

Here is the documentation:

In Numpy dimensions are called axes. The number of axes is rank.

For example, the coordinates of a point in 3D space [1, 2, 1] is an array of rank 1, because it has one axis. That axis has a length of

3.

解决方案

In numpy arrays, dimensionality refers to the number of axes needed to index it, not the dimensionality of any geometrical space. For example, you can describe the locations of points in 3D space with a 2D array:

array([[0, 0, 0],

[1, 2, 3],

[2, 2, 2],

[9, 9, 9]])

Which has shape of (4, 3) and dimension 2. But it can describe 3D space because the length of each row (axis 1) is three, so each row can be the x, y, and z component of a point's location. The length of axis 0 indicates the number of points (here, 4). However, that is more of an application to the math that the code is describing, not an attribute of the array itself. In mathematics, the dimension of a vector would be its length (e.g., x, y, and z components of a 3d vector), but in numpy, any "vector" is really just considered a 1d array of varying length. The array doesn't care what the dimension of the space (if any) being described is.

You can play around with this, and see the number of dimensions and shape of an array like so:

In [262]: a = np.arange(9)

In [263]: a

Out[263]: array([0, 1, 2, 3, 4, 5, 6, 7, 8])

In [264]: a.ndim # number of dimensions

Out[264]: 1

In [265]: a.shape

Out[265]: (9,)

In [266]: b = np.array([[0,0,0],[1,2,3],[2,2,2],[9,9,9]])

In [267]: b

Out[267]:

array([[0, 0, 0],

[1, 2, 3],

[2, 2, 2],

[9, 9, 9]])

In [268]: b.ndim

Out[268]: 2

In [269]: b.shape

Out[269]: (4, 3)

Arrays can have many dimensions, but they become hard to visualize above two or three:

In [276]: c = np.random.rand(2,2,3,4)

In [277]: c

Out[277]:

array([[[[ 0.33018579, 0.98074944, 0.25744133, 0.62154557],

[ 0.70959511, 0.01784769, 0.01955593, 0.30062579],

[ 0.83634557, 0.94636324, 0.88823617, 0.8997527 ]],

[[ 0.4020885 , 0.94229555, 0.309992 , 0.7237458 ],

[ 0.45036185, 0.51943908, 0.23432001, 0.05226692],

[ 0.03170345, 0.91317231, 0.11720796, 0.31895275]]],

[[[ 0.47801989, 0.02922993, 0.12118226, 0.94488471],

[ 0.65439109, 0.77199972, 0.67024853, 0.27761443],

[ 0.31602327, 0.42678546, 0.98878701, 0.46164756]],

[[ 0.31585844, 0.80167337, 0.17401188, 0.61161196],

[ 0.74908902, 0.45300247, 0.68023488, 0.79672751],

[ 0.23597218, 0.78416727, 0.56036792, 0.55973686]]]])

In [278]: c.ndim

Out[278]: 4

In [279]: c.shape

Out[279]: (2, 2, 3, 4)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值