简单浏览了一下numpy中array属性的清单,挨个输入看了一下

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

>>> a

array([[1, 2, 3],

       [4, 5, 6],

       [7, 8, 9]])

>>> a.T

array([[1, 4, 7],

       [2, 5, 8],

       [3, 6, 9]])



属性T应该是矩阵的转置,再创建一个量做一下测试:

>>> b = np.array([[1,2,3],[4,5,6]])

>>> b

array([[1, 2, 3],

       [4, 5, 6]])

>>> b.T

array([[1, 4],

       [2, 5],

       [3, 6]])



>>> a.data

<read-write buffer for 0x7ff3b8800710, size 72, offset 0 at 0x106b288b0>

>>> a.dtype

dtype('int64')

>>> a.flags

  C_CONTIGUOUS : True

  F_CONTIGUOUS : False

  OWNDATA : True

  WRITEABLE : True

  ALIGNED : True

  UPDATEIFCOPY : False

>>> a.flat

<numpy.flatiter object at 0x7ff3b9002200>

>>> a.imag

array([[0, 0, 0],

       [0, 0, 0],

       [0, 0, 0]])

>>> a.real

array([[1, 2, 3],

       [4, 5, 6],

       [7, 8, 9]])

>>> a.size

9

>>> a.itemsize

8

>>> a.nbytes

72

nbytes应该数a所占的存储空间。


>>> a.ndim

2

>>> a.shape

(3, 3)

>>> a.strides

(24, 8)

>>> a.ctypes

<numpy.core._internal._ctypes object at 0x106b288d0>

>>> a.base

>>> a.base is a

False



关于base属性,参考手册中的说明做测试:

>>> a

array([[1, 2, 3],

       [4, 5, 6],

       [7, 8, 9]])

>>> c = a[:2]

>>> c

array([[1, 2, 3],

       [4, 5, 6]])

>>> c.base is a

True


由上面的测试,似乎可以把这个属性理解为是子集判断数据共享的一种方法。