目录
1.创建数组
array() 函数创建一个 NumPy ndarray 对象
import numpy as np
a = np.array([1,2,3,4,5]) #np.array([1,2,4],ndim = 3)指定数组的维度
print(a)
print(type(a))
#[1 2 3 4 5]
#<class 'numpy.ndarray'>
一维数组和二维数组(通常表示矩阵和二维张量),三维矩阵(两个二维矩阵组成)
import numpy as np
a = np.array([1,2,3])
b = np.array([[1,2,3],[4,5,6]])
c = np.array([[[1,2,3],[4,5,6]],[[7,8,9],[10,11,12]]])
print(a)
print("\n",b)
print("\n",c)
print(a.ndim)
print(b.ndim)
print(c.ndim)
NumPy 有一个专门用于矩阵运算的完整子模块 numpy.mat
NumPy 数组提供了 ndim 属性,该属性返回一个整数,该整数会告诉我们数组有多少维。
2. 访问数组
和MATLAB中差不多。
import numpy as np
b = np.array([[1,2,3],[4,5,6]])
c = np.array([[[1,2,3],[4,5,6]],[[7,8,9],[10,11,12]]])
print("\n",b)
print(b.ndim)
print(b[0,1])
3.数组裁剪
import numpy as np
arr = np.array([1,2,3,4,5,6,7])
print(arr[1:5])
#[2 3 4 5] 左开右闭
4.数据类型
默认情况下,Python 拥有以下数据类型
- strings - 用于表示文本数据,文本用引号引起来。例如 "ABCD"。
- integer - 用于表示整数。例如 -1, -2, -3。
- float - 用于表示实数。例如 1.2, 42.42。
- boolean - 用于表示 True 或 False。
- complex - 用于表示复平面中的数字。例如 1.0 + 2.0j,1.5 + 2.5j。
NumPy 有一些额外的数据类型,并通过一个字符引用数据类型,例如 i 代表整数,u 代表无符号整数等。
以下是 NumPy 中所有数据类型的列表以及用于表示它们的字符。
- i - 整数
- b - 布尔
- u - 无符号整数
- f - 浮点
- c - 复合浮点数
- m - timedelta
- M - datetime
- O - 对象
- S - 字符串
- U - unicode 字符串
- V - 固定的其他类型的内存块 ( void )
NumPy 数组对象有一个名为 dtype 的属性,该属性返回数组的数据类型。
import numpy as np
a = np.array([1,2,3])
print(a.dtype) # int32
#print(type(a))
5.副本/视图
副本和数组视图之间的主要区别在于副本是一个新数组,而这个视图只是原始数组的视图。副本拥有数据,对副本所做的任何更改都不会影响原始数组,对原始数组所做的任何更改也不会影响副本。视图不拥有数据,对视图所做的任何更改都会影响原始数组,而对原始数组所做的任何更改都会影响视图。
import numpy as np
a = np.array([1,2,3,4,5])
# 创建视图
x = a.view()
# 创建副本
# x = a.copy()
a[0] = 61
print(a)
print(x)
# 视图
#[61 2 3 4 5]
#[61 2 3 4 5]
#副本
#[61 2 3 4 5]
#[1 2 3 4 5]
副本拥有数据,而视图不拥有数据,每个 NumPy 数组都有一个属性 base,如果该数组拥有数据,则这个 base 属性返回 None。否则,base 属性将引用原始对象。
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
x = arr.copy()
y = arr.view()
print(x.base)
print(y.base)
# None
# [1 2 3 4 5]
6.数组常用属性
- NumPy 数组有一个名为 shape 的属性,该属性返回一个元组,每个索引具有相应元素的数量。
- 重塑数组reshape属性,返回的是视图
- 将多维数组转换为 1D 数组reshape(-1)
import numpy as np
arr = np.array([1,2,3,4,5,6])# 一维数组
print(arr)
arr1 = arr.reshape(2,3) # 重塑为二维数组
print(arr1)
print(new_arr.base) # 重塑后返回的是视图不是副本
arr2 = arr1.reshape(-1) # 重塑为一维数组
print(arr2)
结果如下所示
- 数组拼接concatenate(,axis=) 函数,hstack() 沿行堆叠,vstack() 沿列堆叠,dstack() 沿高度堆叠
- 排序
- 拆分
7.随机
NumPy 提供了 random 模块来处理随机数。
- 生成随机数
from numpy import random
a = random.randint(100)
print(a)
- 生成随机数组
from numpy import random
a = random.randint(100,size=(2,3))#生成二维数组
print(a)