import numpy as np
import numpy as np
list1 = [3.14,2.17,0,1,2]
nd1 = np.array(list1)
print(nd1)
print(type(nd1))
import numpy as np
list2 = [[3.14,2.17,0,1,2],[1,2,3,4,5]]
nd2 = np.array(list2)
print(nd2)
print(type(nd1))
seed( ) 用于指定随机数生成时所用算法开 始的整数值,如果使用相同的seed( )值,则每次生成的随即数都相同,如果不设置这个值,则系统根据时间来自己选择这个值,此时每次生成的随机数因时间差异而不同。
有无seed()区别:有seed()时,无论重复多少次IN[17]程序,得到的结果都相同;无seed()时,每次的结果都变化
生成一个随机种子,对生成的随机数打乱:
import numpy as np
np.random.seed(123)
nd5_1 = np.random.randn(2,3)
print(nd5_1)
np.random.shuffle(nd5_1)
print('随机打乱后数据')
print(nd5_1)
print(type(nd5_1))
import numpy as np
nd6 = np.zeros([3,3]) #生成全是0的3x3矩阵
nd7 = np.ones([3,3]) #生成全是1的3x3矩阵
nd8 = np.eye(3) #生成3阶的单位矩阵
nd9 = np.diag([1,2,3]) #生成3阶对角矩阵
将生成的数据保存到磁盘,再从磁盘读取
import numpy as np
nd10 = np.random.random([5,5])
np.savetext(X=nd10,fname='./test2.txt')
nd11 = np.loadtxt('./test2.txt')
arrange(start, stop[, step],dtype=None)
根据start与stop指定的范围,以及step设定的步长,生成一个ndarray,start默认为0
import numpy as np
print(np.arange(10))
print(np.arange(0,10))
print(np.arange(1,4,0.5))
print(np.arange(9,-1,-1))
import numpy as np
np.random.seed(2018)
nd12 = np.random.random([10])
#获取指定位置的数据,获取第四个元素
nd12_1 = nd12[3]
#截取一段数据
nd12_2 = nd12[3:6]
#截取固定间隔数据
nd12_3 = nd12[1:6:2]
#倒序取数
nd12_4 = nd12[::-2]
#截取一个多维数组的一个区域内数据
nd13 = np.arange(25).reshape([5,5])
nd13_1 = nd13[1:3,1:3]
#截取一个多维数组中,数值在一个值域内的数据
nd13_2 = nd13[(nd13>3)&(nd13<10)]
#截取多维数组中,指定的行,如读取第2,3行
nd13_3 = nd13[[1,2]] #或nd13[1:3,:]
#截取多维数组中,指定的列,如读取第2,3列
通过random.choice函数从指定的样本中进行随机抽取数据
import numpy as np
from numpy import random as nr
a = np.arange(1,25,dtype = float)
c1 = nr.choice(a,size=(3,4)) #size指定输出数组形状
c2 = nr.choice(a,size=(3,4),replace=False) #replace缺省值为True,即可重复抽取
#下式中参数p指定每个元素对应的抽取概率,默认每个元素被抽取的概率相同
c3 = nr.choice(a,size=(3,4),p=a/np.sum(a))
print('随机可重复抽取')
print(c1)
print('随机但不重复抽取')
print(c2)
print('随机但按制度概率抽取')
print(c3)
import numpy as np
nd14 = np.arange(9).reshape([3,3])
#矩阵转置
nd14_t = np.transpose(nd14)
#矩阵乘法运算
a = np.arange(12).reshape([3,4])
b = np.arange(8).reshape([4,2])
a_b = a.dot(b) ##如果处理的是一维数组,则得到的是两数组的内积,a·b=a1b1+a2b2+……+anbn
#就矩阵的迹
a_j = a.trace()
#计算矩阵行列式
a_linalg = np.linalg.det(nd14)
#计算逆矩阵
c = np.random.random([3,3])
c_nijuzhen = np.linalg.solve(c,np.eye(3))
import numpy as np
a = np.array([1,2,3])
b = np.array([4,5,6])
c = np.append(a,b) #输出[1,2,3,4,5,6]
print(c)
d = np.concatenate([a,b]) #输出[1,2,3,4,5,6]
print(d)
输出:
[1 2 3 4 5 6]
[1 2 3 4 5 6]
import numpy as np
a = np.arange(4).reshape(2,2)
b = np.arange(4).reshape(2,2)
#按行合并
c = np.append(a,b,axis=0)
print(c)
print('合并后的数据维度',c.shape)
#按列排列
d = np.append(a,b,axis=1)
print(d)
print('合并后数据维度',d.shape)
输出:
import numpy as np
a = np.arange(4).reshape(2,2)
b = np.arange(4).reshape(2,2)
#按行合并
c = np.append(a,b,axis=0)
print(c)
print('合并后的数据维度',c.shape)
#按列排列
d = np.append(a,b,axis=1)
print(d)
print('合并后数据维度',d.shape)
输出:
[[0 1]
[2 3]
[0 1]
[2 3]]
合并后的数据维度 (4, 2)
[[0 1 0 1]
[2 3 2 3]]
合并后数据维度 (2, 4)
-矩阵展平
import numpy as np
nd15 = np.arange(6).reshape(2,-1) #缺省值-1代表我不知道要给行(或者列)设置为几,reshape函数会根据原矩阵的形状自动调整
print(nd15)
#按照列优先,展平
print('按列优先,展平')
print(nd15.ravel('F'))
#按照行优先,展开
print('按行优先,展开')
print(nd15.ravel())
输出:
[[0 1 2]
[3 4 5]]
按列优先,展平
[0 3 1 4 2 5]
按行优先,展开
[0 1 2 3 4 5]
.shape()用法
https://blog.csdn.net/zhanggonglalala/article/details/79356653
numpy中常用通用函数:
深度学习算法中,一般使用向量化矩阵运算。
功能:为了方便不同shape的数组进行数学运算
广播的兼容性原则为:
import numpy as np
a = np.arange(10)
b = np.arange(10)
#两个shape相同的数组相加
print('a+b=',a+b)
#一个数组与标量相加
print('a+3=',a+3)
#两个向量相乘
print('a*b=',a*b)
#多维数组之间的运算
c = np.arange(10).reshape([5,2])
d = np.arange(2).reshape([1,2])
#首先将数组进行复制扩充为[5,2],如何复制请参考下图,然后相加
print('c+d=')
print(c+d)
输出:
a+b= [ 0 2 4 6 8 10 12 14 16 18]
a+3= [ 3 4 5 6 7 8 9 10 11 12]
a*b= [ 0 1 4 9 16 25 36 49 64 81]
c+d=
[[ 0 2]
[ 2 4]
[ 4 6]
[ 6 8]
[ 8 10]]
《python深度学习 基于TensorFlow》吴茂贵 第一章 NumPy常用操作 笔记