数组属性反映数组固有的信息。通过数组的属性访问数组可以获取并且有时可以设置数组的内在属性,而无需创建新数组。下面给出了最常用属性的信息:

函数描述
ndarray.shape数组维度元组。
ndarray.ndim数组维度数。
ndarray.itemsize一个数组元素的长度(以字节为单位)。
ndarray.size数组中的元素数量。
ndarray.dtype数组元素的数据类型。
ndarray.T转置数组。
ndarray.real数组的实部 .
ndarray.imag数组的虚部。
ndarray.flags有关数组内存布局的信息。

让我们详细讨论这些属性:

ndarray.shape

shape 属性用于获取数组的当前形状。它还可用于通过向数组分配新数组维度的元组来重塑数组。考虑以下示例。

import numpy as np
Arr = np.array([[1, 2, 3], 
                [4, 5, 6]])

print("Arr is:")
print(Arr)

print("\nArr 的形状为:", Arr.shape)

#将新形状分配给Arr
Arr.shape = (3,2)

print("\nAfter reshaping, Arr is:")
print(Arr) 

上述代码的输出将是:

Arr is:
[[1 2 3]
 [4 5 6]]

Arr 的形状为: (2, 3)

After reshaping, Arr is:
[[1 2]
 [3 4]
 [5 6]] 

ndarray.ndim

ndim 属性用于获取数组维数。

import numpy as np

#创建一个3维数组
Arr = np.zeros((2,3,4))

print("Arr is:")
print(Arr)

#获取Arr的维数
print("\n维数为:", Arr.ndim) 

上述代码的输出将是:

Arr is:
[[[0. 0. 0. 0.]
  [0. 0. 0. 0.]
  [0. 0. 0. 0.]]

 [[0. 0. 0. 0.]
  [0. 0. 0. 0.]
  [0. 0. 0. 0.]]]

维数为: 3 

ndarray.itemsize

itemsize 属性用于获取数组元素的长度(以字节为单位)。

import numpy as np

#创建一个3维数组
Arr = np.array([1, 2, 3])

print("Arr is:")
print(Arr)

#Arr 元素的长度(以字节为单位)
print("\n数组元素的长度(以字节为单位):", Arr.itemsize) 

上述代码的输出将是:

Arr is:
[1 2 3]

数组元素的长度(以字节为单位): 8 

ndarray.size

size属性用于获取数组中元素的数量。它相当于数组维度的乘积。

import numpy as np

#创建一个3维数组
Arr = np.ones((2,3,4))

print("Arr is:")
print(Arr)

#获取Arr中的元素数量
print("\nArr 中的元素数量:", Arr.size) 

上述代码的输出将是:

Arr is:
[[[1. 1. 1. 1.]
  [1. 1. 1. 1.]
  [1. 1. 1. 1.]]

 [[1. 1. 1. 1.]
  [1. 1. 1. 1.]
  [1. 1. 1. 1.]]]

Arr 中的元素数量: 24 

ndarray.dtype

dtype 属性用于获取数组元素的数据类型。考虑以下示例。

import numpy as np
Arr = np.array([[1, 2, 3], 
                [4, 5, 6]])

print("Data-type of array is:", Arr.dtype)
print("Type of dtype is:", type(Arr.dtype)) 

上述代码的输出将是:

Data-type of array is: int64
Type of dtype is: <class 'numpy.dtype[int64]'> 

ndarray.T

T 属性用于获取数组的转置。

import numpy as np
Arr = np.array([[1, 2, 3], 
                [4, 5, 6]])

print("Arr is:")
print(Arr)

print("\nArr 的转置为:")
print(Arr.T) 

上述代码的输出将是:

Arr is:
[[1 2 3]
 [4 5 6]]

Arr 的转置为:
[[1 4]
 [2 5]
 [3 6]] 

ndarray.real & ndarray.imag

real 和 imag 属性分别用于获取数组的实部和虚部。下面的示例显示了这些属性的用法。

import numpy as np
Arr = np.array([[1+2j, 2-4j], 
                [3-6j, 4-8j]])

print("Arr is:")
print(Arr)

#Arr 的实部
print("\nArr 的实部为:")
print(Arr.real)

#Arr 的虚部
print("\nArr 的虚部为:")
print(Arr.imag) 

上述代码的输出将是:

Arr is:
[[1.+2.j 2.-4.j]
 [3.-6.j 4.-8.j]]

Arr 的实部为:
[[1. 2.]
 [3. 4.]]

Arr 的虚部为:
[[ 2. -4.]
 [-6. -8.]] 

ndarray.flags

flags 属性用于获取有关数组内存布局的信息。

函数描述
C_CONTIGUOUS (C)数据位于单个 C 样式连续段中。
F_CONTIGUOUS (F)数据位于单个 Fortran 风格的连续段中
OWNDATA (O)数组拥有它使用或借用的内存 另一个对象。
WRITEABLE (W)数据区域可以写入。 将其设置为 False 将锁定数据,使其只读。
ALIGNED (A)数据和所有元素都针对硬件进行适当对齐 .
WRITEBACKIFCOPY (X)此数组是其他数组的副本。 在释放到基数组之前必须调用 C-API 函数 PyArray_ResolveWritebackIfCopy 将使用该数组的内容进行更新。
UPDATEIFCOPY (U)(已弃用,请使用 WRITEBACKIFCOPY)此数组是其他数组的副本。 当此数组被释放时,基础数组将使用此数组的内容进行更新。

考虑以下示例,其中显示标志的当前值。

import numpy as np
Arr = np.array([[1, 2], 
                [3, 4]])

#有关内存布局的信息
print(Arr.flags) 

输出上面的代码将是:

C_CONTIGUOUS : True
F_CONTIGUOUS : False
OWNDATA : True
WRITEABLE : True
ALIGNED : True
WRITEBACKIFCOPY : False
UPDATEIFCOPY : False