import pandas as pd
import numpy as np
one_matrix = np.ones([3, 3])
zero_matrix = np.zeros_like(one_matrix)
arr = np.array([[3, 4], [1, 2]])
arr1 = np.array(arr)
#如果输入本身就是一个 NumPy 数组,并且不需要更改数据类型,numpy.asarray 不会创建新数组,而是返回输入数组的引用
arr2 = np.asarray(arr)
#生成固定范围的数组
arr = np.arange(0, 13, 2)
#rand基本用法,产生[0,1)之间均匀分布的随机浮点数
#产生形状为(2,)的数组,也就是相当于有两个元素的一维数组
arr3 = np.random.rand(2)
#产生一个形状为(2,4)的数组,数组中的每个元素是[0,1)之间均匀分布的随机浮点数
arr4 = np.random.rand(2, 4)
#产生一个[0,1)之间的形状为(3,3)的数组
arr5 = np.random.random((3, 3))
#默认产生一个[1,5)之间的形状为(2,4)的随机浮点数
arr6 = np.random.uniform(1, 5, size=(2, 4))
#np.random.randn(d0,d1,...,dn),产生服从于标准正态分布(均值为0,方差为1)的随机浮点数
#产生形状为(2,)的数组
np.random.rand(2)
#产生形状为(2,4)的数组
np.random.rand(2, 4)
#numpy.random.normal(loc=0.0, scale=1.0, size=None),产生服从正态分布(均值为loc,标准差为scale)的随机浮点数
#产生均值为1标准差为10形状为(1000,)的数组
np.random.normal(1, 10, 100)
#产生均值为3标准差为2形状为(2,4)的数组
np.random.normal(3, 2, size=(2, 4))
#numpy.random.choice(a, size=None, replace=True, p=None),从一维arrary a中按概率p选择size个数组,若a为int,则从np.arrange(a)中选择,若a为array,则直接从a中选择。
aa_milne_arr = ['pooh', 'rabbit', 'piglet', 'Christopher']
#概率列表 probabilities,它包含了与 aa_milne_arr 中每个元素相对应的选择概率
probabilities = [0.5, 0.1, 0.1, 0.3]
arr7 = np.random.choice(aa_milne_arr, 5, p=probabilities)
#数组的索引、切片
# print(b[0, 1]) #array([4,5,6])
# print(b[0][1]) #array([4,5,6])
a = [[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]]
b = np.array(a)
matrix = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9],[10, 11, 12]])
#.T可以实现一个矩阵的转置
arr=np.array([[1,2],[3,4]])
arr.T#[[1,3],[2,4]]
#.reshapre()实际上是将原来的数组压平成一维数组,然后再重新排序成目标形状,但不改变原数组
# NumPy 的 np.concatenate 函数来合并两个二维数组 a 和 b。
# axis=0 参数指定了沿着哪个轴进行连接。在这种情况下,axis=0 表示沿着第一个维度(即垂直方向
a=[[1,2],[3,4]]
b=[[10,11],[12,13]]
res1=np.concatenate((a,b),axis=0)
print(res1)
#类型修改:
# .astype(str)将这个数组中的每个元素都变成string类型,该方法不改变原数组,而是返回一个新数组
#.unique()可以实现对一个现有数组,除去其中重复的元素
#.sqrt(),可以实现计算元素的平方根
#.square()计算各元素的平方,
#.exp()可以计算各元素的e指数,
#.power(arr, t)可以计算数组中各元素t次方
#.isnan()用于判断数组中哪些元素是空值
#.where()可以对数组进行筛选
#线性代数
a=[1,2,3]
b=[[1,3,9],[2,7,0],[4,3,2]]
#.diag(matrix),matirx为一个矩阵,
# 当matrix为二维数组时,以一维数组的形式返回方阵的对角线;
# 当matrix为一维数组时,则返回非对角线元素均为0的方阵
print(np.diag(a))#[[1,0,0],[0,2,0],[0,0,3]]
#迹是矩阵的一个不变量,即它与矩阵的转置无关(tr(A) = tr(A^T))。这表明迹可以用于描述线性变换的某些不变性质
print(np.trace(b))#10
#.dot()可以实现矩阵乘积
#.det()可以计算矩阵的行列式
#p.linalg.eig()可以计算方阵的特征值、特征向量
eig=np.linalg.eig(b)
#特征值
eig[0]#[-4.40641364,9.92452468,4.48188896]
#特征向量
eig[1]#[[0.86881121,-0.6982852,0.69750503],[-0.15233731,-0.47753756,-0.55399068],[-0.47112676,-0.53325009,0.4545119]]
#.linalg.inv()可以计算矩阵的逆
#统计分析
a=np.array([[1,2,3],[4,5,6]])
#通过np.sum(a,axis)计算数组a沿指定轴的和
print(np.sum(a))#21
print(np.sum(a,axis=0))#[5,7,9]
#axis=None时,会返回所有元素的和;axis=0时,会沿着第0个维度(也就是列)的变化方向进行计算,即按列求和;axis=1时,则为按行求和
#np.mean(a,axis)计算数组a沿指定轴的平均值
print(np.mean(a,axis=1))#[2,5]
#np.std(a,axis)计算数组a沿指定轴的标准差