借到了本相当合心的《Python编程 从数据分析到机器学习实战》
目录
01 建立数组
from time import perf_counter
from turtle import pen
#不知道怎么跳出来的
import numpy as np
# 用np调用函数,返回数组,可用列表/元组建立一至多维数组
ar=np.array([[[1,2],[3,4]],[[5,6],[7,8]]])
print(ar)
# [[[1 2]
# [3 4]]
#
# [[5 6]
# [7 8]]]
a=np.array([1,2,3,4])
b=a+1
print(a*b) #[ 2 6 12 20]
'''数组建立方法'''
print(np.arange(1,7,2)) # 指定步长 [1 3 5]
print(np.linspace(1,7,5)) # 指定元素个数,步长均匀 [1. 2.5 4. 5.5 7. ]
print(np.logspace(2,3,4)) # 指定元素个数,步长对数刻度上均匀 [ 100. 215.443469 464.15888336 1000. ]
# 默认参数base=10.0 为对数底数
print(np.zeros((2,2))+np.ones((2,2))) # 返回全是 0 1
# [[1. 1.]
# [1. 1.]]
print(np.empty((2,3))) # 返回随机
# [[3.78290736e-307 9.34587381e-307 1.60219035e-306]
# [8.90070286e-308 1.37962117e-306 2.00272265e-307]]
print(np.full((2,2),'!')) # 返回指定填充
print(np.eye(3,4,1)+np.eye(3,4,-1)) # 第二个参数默认等于第一个,第三个参数对角线位置,正/负表示上/下对角线
# [[0. 1. 0. 0.]
# [1. 0. 1. 0.]
# [0. 1. 0. 1.]]
print(np.repeat((1,2,3),3)) # 每个元素重复n遍
# [1 1 1 2 2 2 3 3 3]
'''数组属性使用'''
print(ar.ndim,ar.shape,ar.size,ar.dtype,ar.itemsize)
# 维数 形状大小 元素个数 元素类型 元素字节大小
# 3 (2, 2, 2) 8 int32 4
'''数组方法使用'''
print(ar.reshape(2,4),ar) # 原数组不改变
ar.shape=2,4 # 或直接更改属性
print(ar)
print(np.array([False,1]).all()) # 返回是否全非0
print(np.alltrue(np.array([False,1]))) #等价
# 默认参数axis=0 为维度方向,向里一个括号表示降一维
print(ar.any(axis=1)) # 返回是否有非0 [ True True]
print(ar.reshape(4,2).any(axis=1)) # [ True True True True]
print(id(ar),id(ar.copy())) # 复制!=赋值,地址不同
print(a.astype(float)) # 改变元素类型
#若 a.dtype=float
# print(a) [4.24399158e-314 8.48798317e-314]
'''数组对接、分割'''
print((a,b)) # (array([1, 2, 3, 4]), array([2, 3, 4, 5]))
print([a,b]) # [array([1, 2, 3, 4]), array([2, 3, 4, 5])]
print(np.vstack((a,b))) # 垂直vertical对接
# [[1 2 3 4]
# [2 3 4 5]]
print(np.hstack((a,b))) # 水平horizontal对接
# [1 2 3 4 2 3 4 5]
print(np.vsplit(ar,2)) # 垂直分割
# [array([[1, 2, 3, 4]]), array([[5, 6, 7, 8]])]
print(np.hsplit(ar,2)) # 水平分割
# [array([[1, 2],
# [5, 6]]), array([[3, 4],
# [7, 8]])]