numpy之数组计算

# coding=utf-8
import numpy as np
import random
#数组和数字计算,进行广播计算,包括加减乘除
t8 = t8 +2
print(t8,t8.dtype,t8.shape)

#数组和数组计算,只要在某一维度(行或列)一样,就可以进行广播计算,包括加减乘除
t9 = t5+t6
print(t9,t9.dtype,t9.shape)


'''
如果两个数组的后缘维度(即从末尾开始算起的维度)的轴长度相符或其中一方的维度为1,则认为他们的是广播兼容的
例如
    (3,3,3)与(3,2)不可以计算,因为(3, 3,3)最后两个3,3与3,2不相符
    (3,3,2)与(3,2)可以计算,因为从最后开始,存在相符维度即(3,2)
'''
t7 = np.ones((3,3))
t10 = np.random.randint(10,20,(3,3,3))
print(t10,t10.dtype,t10.shape)
t10 = t10 + t7
print(t10,t10.dtype,t10.shape)
t10 = t10 - t7
print(t10,t10.dtype,t10.shape)
t10 = t10.dot(t7)
print(t10,t10.dtype,t10.shape)
t10 = t10/t7
print(t10,t10.dtype,t10.shape)

#四维数组
t10 = np.random.randint(10,20,(3,3,3,4))
print(t10,t10.dtype,t10.shape)


###########其他计算方法###################
'''
获取最大值最小值的位置
  np.argmax(t,axis=0)  #每一行最大值位置
  np.argmin(t,axis=1)  #每一列最小值的位置
创建一个全0的数组: np.zeros((3,4))
创建一个全1的数组:np.ones((3,4))
创建一个对角线为1的正方形数组(方阵):np.eye(3)
'''

'''
rand(d0, d1, …, dn)    产生均匀分布的随机数    dn为第n维数据的维度
randn(d0, d1, …, dn)    产生标准正态分布随机数    dn为第n维数据的维度
randint(low[, high, size, dtype])    产生随机整数    low:最小值;high:最大值;size:数据个数
uniform(low,high,(size))     产生均匀分布的数组,low起始值,high结束值,size形状
normal(loc,scale,(size))    从指定正太分布中随机抽取样本,分布中心为loc,标准差为scale,形状为size
seed(s)     随机数种子,s是给定的种子值,因为计算机生成的是伪随机数,所以通过设定相同的随机数种子,可以每次生成相同的随机数
'''

'''
np.nan与np.nan不相等
np.count_nonzero(t)判断t中不为0的数量
np.count_nonzero(np.isnan(t))判断t中nan的数量
nan与任何值进行计算都为nan

求和:t.sum(axis=None)
均值:t.mean(a,axis=None)  受离群点的影响较大
中值:np.median(t,axis=None) 
最大值:t.max(axis=None) 
最小值:t.min(axis=None)
极值:np.ptp(t,axis=None) 即最大值和最小值只差 
标准差:t.std(axis=None) 
协方差: cov = np.cov(data.T) #计算协方差矩阵
计算矩阵的特征值和特征向量: eig_val, eig_vec = np.linalg.eig(data)#要求矩阵是方阵 
'''

 注意点:

  数组中的属性axis表示,以数组的该行维度个数返回
原文地址:https://www.cnblogs.com/ywjfx/p/10827062.html