numpy的基本用法
# Author:NDK
# -*- coding:utf-8 -*-
import numpy as np
"""矩阵基本操作"""
# array = np.array([1, 2, 3])
# print(array)
# print(array.ndim) 返回矩阵的维数
# print(array.size) 返回矩阵的元素个数
# a = np.array([2,23,45],dtype=np.int) 生成矩阵,dtype定义类型
# a = np.ones((3,6)) 全零矩阵形状用元组传入
# a = np.zeros((3,6)) 全一矩阵
# a = np.arange(0,10,2).reshape((1,5)) 生成指定范围矩阵
# a = np.linspace(0,10,8) 按指定值第三个参数(8)等分指定范围区域前两个参数(1,10)
# a = np.array([[1,2],
# [2,4]])
# b = np.arange(4).reshape((2,2))
# c = a*b 矩阵的点乘
# d = np.dot(a,b) 矩阵一般的乘法
# print(a,b)
# print(c)
# print(d)
# print(a**2) 放回矩阵内每个元素的平方构成的矩阵
# 生成(0,1)之间随机数构成的2行4列矩阵
# e = np.random.random((2,4))
# 返回最大值(axis=0代表行,axis=1代表列)
# print(np.max(e,axis=0))
# 返回最小值(axis=0代表行,axis=1代表列)
# print(np.min(e,axis=0))
# 返回累加和(axis=0代表行,axis=1代表列)
# print(np.sum(e,axis=0))
"""矩阵简单计算"""
# a = np.arange(2,14).reshape((3,4))
# print(a)
# print(np.mean(a)) 平均值
# print(np.cumsum(a)) 返回累加值 [ 2 5 9 14 20 27 35 44 54 65 77 90]
# print(np.diff(a)) 返回累差[[1 1 1],[1 1 1],[1 1 1]]由于最后一行没有差的,所以会减少一列
# print(np.nonzero(a)) 返回非零的数的下标
# print(np.sort(a)) 将矩阵逐行排序(不是整个矩阵排序,仅每一行内排序)
# print(np.transpose(a)) 将矩阵a转置
# print(np.clip(a,4,8)) 将矩阵小于4的改为4,大于8的改为8
"""矩阵切片"""
# a = np.arange(3,18).reshape((5,3))
# print(a)
# print(a[0]) 第0行
# print(a[1][2]) 第01行2列
# print(a[0][1:3]) 切片:返回0行1和2列
# for row in a: 默认迭代a的行
# print(row)
# for row in np.transpose(a): 将a转置,迭代a的列
# print(row)
# for i in a.flat: 迭代a的每一个元素
# print(i)
#
"""矩阵合并"""
# a = np.array([1,3,4])
# b = np.array([2,5,7])
# # 垂直合并
# c = np.vstack((a,b))
# print(c)
# # 水平合并
# d = np.hstack((a,b))
# print(d)
"""矩阵分割"""
# a = np.arange(12).reshape((3,4))
# print(a)
# # 矩阵分割split要求可以等分,array_split不等分也可以(axis=0表示行,=1表示列)
# print(np.array_split(a,3,axis=0))
"""矩阵的深浅拷贝"""
# a = np.array([4,5,6,7])
# # 浅拷贝
# b = a
# c = b
# a[0] = 13
# # 当改变a是b,c一起改变
# print(a,b,c) [13 5 6 7] [13 5 6 7] [13 5 6 7]
# print('b是a吗?',b is a) 判断b是否是a 返回True
# 深拷贝
# d = a.copy()
# a[1] = 18
# print(a,d) [13 18 6 7] [13 5 6 7] d不在随a的改变而变化