# NumPy - 数组属性

## `ndarray.shape`

### 示例 1

``````import numpy as np
a = np.array([[1,2,3],[4,5,6]])
print a.shape
``````

``````(2, 3)
``````

### 示例 2

``````# 这会调整数组大小
import numpy as np

a = np.array([[1,2,3],[4,5,6]]) a.shape =  (3,2)
print a
``````

``````[[1, 2]
[3, 4]
[5, 6]]
``````

### 示例 3

NumPy 也提供了`reshape`函数来调整数组大小。

``````import numpy as np
a = np.array([[1,2,3],[4,5,6]])
b = a.reshape(3,2)
print b
``````

``````[[1, 2]
[3, 4]
[5, 6]]
``````

## `ndarray.ndim`

### 示例 1

``````# 等间隔数字的数组
import numpy as np
a = np.arange(24)  print a
``````

``````[0 1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16 17 18 19 20 21 22 23]
``````

### 示例 2

``````# 一维数组
import numpy as np
a = np.arange(24) a.ndim
# 现在调整其大小
b = a.reshape(2,4,3)
print b
# b 现在拥有三个维度
``````

``````[[[ 0,  1,  2]
[ 3,  4,  5]
[ 6,  7,  8]
[ 9, 10, 11]]
[[12, 13, 14]
[15, 16, 17]
[18, 19, 20]
[21, 22, 23]]]
``````

## `numpy.itemsize`

### 示例 1

``````# 数组的 dtype 为 int8（一个字节）
import numpy as np
x = np.array([1,2,3,4,5], dtype = np.int8)
print x.itemsize
``````

``````1
``````

### 示例 2

``````# 数组的 dtype 现在为 float32（四个字节）
import numpy as np
x = np.array([1,2,3,4,5], dtype = np.float32)
print x.itemsize
``````

``````4
``````

## `numpy.flags`

`ndarray`对象拥有以下属性。这个函数返回了它们的当前值。

1. `C_CONTIGUOUS (C)` 数组位于单一的、C 风格的连续区段内
2. `F_CONTIGUOUS (F)` 数组位于单一的、Fortran 风格的连续区段内
3. `OWNDATA (O)` 数组的内存从其它对象处借用
4. `WRITEABLE (W)` 数据区域可写入。 将它设置为`flase`会锁定数据，使其只读
5. `ALIGNED (A)` 数据和任何元素会为硬件适当对齐
6. `UPDATEIFCOPY (U)` 这个数组是另一数组的副本。当这个数组释放时，源数组会由这个数组中的元素更新

### 示例

``````import numpy as np
x = np.array([1,2,3,4,5])
print x.flags
``````

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