NumPy是Python中用于科學計算的基礎(chǔ)庫之一。它提供了高效的多維數(shù)組對象(ndarray)、用于數(shù)組計算的函數(shù)以及用于讀寫磁盤上基于數(shù)組的數(shù)據(jù)集的工具。本教程將介紹NumPy的基本概念和用法。
## 安裝NumPy
在使用NumPy之前,需要先安裝它??梢允褂胮ip命令進行安裝:
```
pip install numpy
```
## NumPy數(shù)組
NumPy的核心是ndarray對象,它是一個多維數(shù)組。ndarray對象可以是一維數(shù)組、二維數(shù)組或更高維數(shù)組。以下是創(chuàng)建ndarray對象的幾種方法:
### 從Python列表創(chuàng)建ndarray對象
可以使用`numpy.array()`函數(shù)從Python列表創(chuàng)建ndarray對象。例如,以下代碼創(chuàng)建了一個一維數(shù)組:
```python
import numpy as np
a = np.array([1, 2, 3])
print(a)
```
輸出:
```
[1 2 3]
```
可以使用`ndarray.shape`屬性獲取數(shù)組的形狀:
```python
print(a.shape)
```
輸出:
```
(3,)
```
這表示數(shù)組有3個元素。
可以使用`ndarray.dtype`屬性獲取數(shù)組的數(shù)據(jù)類型:
```python
print(a.dtype)
```
輸出:
```
int64
```
這表示數(shù)組的元素類型為64位整數(shù)。
可以使用`ndarray.ndim`屬性獲取數(shù)組的維度:
```python
print(a.ndim)
```
輸出:
```
1
```
這表示數(shù)組是一維的。
可以使用`ndarray.size`屬性獲取數(shù)組的元素個數(shù):
```python
print(a.size)
```
輸出:
```
3
```
這表示數(shù)組有3個元素。
可以使用`ndarray.itemsize`屬性獲取數(shù)組的每個元素的字節(jié)數(shù):
```python
print(a.itemsize)
```
輸出:
```
8
```
這表示數(shù)組的每個元素占用8個字節(jié)。
可以使用`ndarray.data`屬性獲取數(shù)組的內(nèi)存地址:
```python
print(a.data)
```
輸出:
```
<memory at 0x7f9d2c2a8f48>
```
### 從Python元組創(chuàng)建ndarray對象
可以使用`numpy.array()`函數(shù)從Python元組創(chuàng)建ndarray對象。例如,以下代碼創(chuàng)建了一個二維數(shù)組:
```python
import numpy as np
a = np.array([(1, 2, 3), (4, 5, 6)])
print(a)
```
輸出:
```
[[1 2 3]
[4 5 6]]
```
可以使用`ndarray.shape`屬性獲取數(shù)組的形狀:
```python
print(a.shape)
```
輸出:
```
(2, 3)
```
這表示數(shù)組有2行3列。
可以使用`ndarray.dtype`屬性獲取數(shù)組的數(shù)據(jù)類型:
```python
print(a.dtype)
```
輸出:
```
int64
```
這表示數(shù)組的元素類型為64位整數(shù)。
可以使用`ndarray.ndim`屬性獲取數(shù)組的維度:
```python
print(a.ndim)
```
輸出:
```
2
```
這表示數(shù)組是二維的。
可以使用`ndarray.size`屬性獲取數(shù)組的元素個數(shù):
```python
print(a.size)
```
輸出:
```
6
```
這表示數(shù)組有6個元素。
可以使用`ndarray.itemsize`屬性獲取數(shù)組的每個元素的字節(jié)數(shù):
```python
print(a.itemsize)
```
輸出:
```
8
```
這表示數(shù)組的每個元素占用8個字節(jié)。
可以使用`ndarray.data`屬性獲取數(shù)組的內(nèi)存地址:
```python
print(a.data)
```
輸出:
```
<memory at 0x7f9d2c2a8f48>
```
### 使用NumPy函數(shù)創(chuàng)建ndarray對象
NumPy提供了許多函數(shù)用于創(chuàng)建ndarray對象。以下是一些常用的函數(shù):
- `numpy.zeros(shape, dtype=float, order='C')`:創(chuàng)建一個指定形狀和數(shù)據(jù)類型的全0數(shù)組。
- `numpy.ones(shape, dtype=float, order='C')`:創(chuàng)建一個指定形狀和數(shù)據(jù)類型的全1數(shù)組。
- `numpy.empty(shape, dtype=float, order='C')`:創(chuàng)建一個指定形狀和數(shù)據(jù)類型的空數(shù)組,其元素值未初始化。
- `numpy.arange([start,] stop[, step,], dtype=None)`:創(chuàng)建一個指定范圍和步長的一維數(shù)組。
- `numpy.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)`:創(chuàng)建一個指定范圍和元素個數(shù)的一維數(shù)組。
例如,以下代碼創(chuàng)建了一個全0數(shù)組:
```python
import numpy as np
a = np.zeros((2, 3))
print(a)
```
輸出:
```
[[0. 0. 0.]
[0. 0. 0.]]
```
可以使用`numpy.ones()`和`numpy.empty()`函數(shù)創(chuàng)建全1數(shù)組和空數(shù)組。
例如,以下代碼創(chuàng)建了一個一維數(shù)組:
```python
import numpy as np
a = np.arange(10)
print(a)
```
輸出:
```
[0 1 2 3 4 5 6 7 8 9]
```
可以使用`numpy.linspace()`函數(shù)創(chuàng)建等間隔的一維數(shù)組。
例如,以下代碼創(chuàng)建了一個一維數(shù)組:
```python
import numpy as np
a = np.linspace(0, 1, 5)
print(a)
```
輸出:
```
[0. 0.25 0.5 0.75 1. ]
```
## NumPy數(shù)組的運算
NumPy數(shù)組支持各種數(shù)學運算,例如加、減、乘、除等。以下是一些常用的運算:
### 數(shù)組加法
可以使用`+`運算符進行數(shù)組加法。例如,以下代碼將兩個數(shù)組相加:
```python
import numpy as np
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
c = a + b
print(c)
```
輸出:
```
[5 7 9]
```
### 數(shù)組減法
可以使用`-`運算符進行數(shù)組減法。例如,以下代碼將兩個數(shù)組相減:
```python
import numpy as np
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
c = a - b
print(c)
```
輸出:
```
[-3 -3 -3]
```
### 數(shù)組乘法
可以使用`*`運算符進行數(shù)組乘法。例如,以下代碼將兩個數(shù)組相乘:
```python
import numpy as np
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
c = a * b
print(c)
```
輸出:
```
[ 4 10 18]
```
### 數(shù)組除法
可以使用`/`運算符進行數(shù)組除法。例如,以下代碼將兩個數(shù)組相除:
```python
import numpy as np
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
c = a / b
print(c)
```
輸出:
```
[0.25 0.4 0.5 ]
```
### 數(shù)組求冪
可以使用`**`運算符進行數(shù)組求冪。例如,以下代碼將一個數(shù)組的每個元素求平方:
```python
import numpy as np
a = np.array([1, 2, 3])
b = a ** 2
print(b)
```
輸出:
```
[1 4 9]
```
聯(lián)系客服