# Numpy 本质就是ndarray 多维数组(多位矩阵)
Numpy重点:
1.数组维度 shape,reshape 获得维度大小:A.shape => (3,5)
2.数组切片 x = np.arange(15).reshape(3,5) x[0:2, 0:3] ***取前2行 前3列
3.数组合并 x = np.concatenate([x1,x2], axis = 1) // axis默认是0 代表行合并
"""
安装 pip install numpy
导入 import numpy as np (np 是简写)
查看版本 np.__version__
"""
import array
"""
arr = array.array('i',list(range(10))) 类型是 array类型
array类型 元素是同一数据类型
array处理效率比 list效率高
"""
#numpy.ndarray
import numpy as np
nparr = np.array(list(range(10)))
type(nparr) #numpy.ndarray
# 元素类型是不可变的 就是整个数组的元素都是 str 或 int 等
# 整数类型放入 小数 会截取整数
"""
强制转换类型 nparr2 = np.array([1,2,3], dtype=float)
"""
"""
1.方便处理多维数组或矩阵之间的运算
2.在处理多维数组或矩阵,运算效率高
"""
# 矩阵之间相加 对应元素相加
def python_test(n):
a = [i **2 for i in range(10)]
b = [i **3 for i in range(10)]
c = []
for i in range(n):
c.append(a[i] + b[i])
return c
print(python_test(10)) #[0, 2, 12, 36, 80, 150, 252, 392, 576, 810]
"""
np.array(range(10)) == np.arange(10)
"""
def numpy_test2(n):
a = np.arange(n) ** 2 # 每个元素平方
b = np.arange(n) **3
c = a + b
return c
#初始化矩阵
np.zeros(10,dtype = int)
# => array([0,0,0,0,0,0,0,0,0,0])
"""shape 维度 三行五列 都是0"""
np.zeros(shape = (3,5),dtype = int)
# => array([
# [0,0,0,0,0],
# [0,0,0,0,0],
# [0,0,0,0,0]
# ])
"""shape 维度 三行五列 都是1"""
A = np.ones(shape = (3,5),dtype = int)
获得维度 A.ndim => 2
获得维度大小 A.shape => (3,5)
获得数组大小 Asize => 15
# => array([
# [1,1,1,1,1],
# [1,1,1,1,1],
# [1,1,1,1,1]
# ])
"""shape 维度 三行五列 都是 99"""
np.full((3,5), 99)
# => array([
# [99,99,99,99,99],
# [99,99,99,99,99],
# [99,99,99,99,99]
# ])
""" 等差数列 linspace """
np.linspace(0,20,10) #0 - 20 之间的 十个数
""" 生成随机整数random.randint 生成随机浮点数random.random """
np.random.randint(0,10) #在0-10 之间随机一个数 不含10
np.random.randint(0,10,size = 5) #生成一维的 5个元素的 array数组
np.random.randint(0,10,size = (2,5)) #生成 两行五列 array数组
np.random.randint(0,10,size = (2,5,3)) #生成 三维 array数组
#修改维度
"""
a = np.arange(10)
=> array([0,1,2,3,4,5,6,7,8,9])
将一维数组 a 变成二行五列的二维数组
X = a.reshape(2,5) === a.reshape(2,-1) //两行 列均分
=> array([[0,1,2,3,4],
[5,6,7,8,9]])
"""
#取值操作
"""
Y = np.arange(15).reshape(3,5) //0-15 的3行5列 的二维数组
Y[0] => [0,1,2,3,4]
取第一个数组的第一个元素
Y[0][0] => 0 //不推荐这样使用,可能报错
Y[(0,0)] === Y[0.0]
"""
#切片 reshape
"""
一维:
a = np.arange(10)
a[0:5:2] === a[:5] 取0-4 2代表步距 隔一个一取下标的元素
二维:
x = np.arange(15).reshape(3,5)
x => array([
[0,1,2,3,4],
[5,6,7,8,9],
[10,11,12,13,14]
])
***取前2行 前3列 [[0,1,3],[5,6,7]]
x[0:2,0:3] => [[0,1,3],[5,6,7]]
"""
# 矩阵的合并 concatenate
x1 = np.array([
[22,168],
[18,178]
])
x2 = np.array([
[0],
[1]
])
axis = 1 代表x1,和x2 列合并
x = np.concatenate([x1,x2], axis = 1) // axis默认是0 代表行合并
=> array([
[22,168,0],
[18,178,1]
])