在python中numpy的调用十分简单,与调用其他的数据包一样:import numpy即可
1.numpy可以打开一个txt文件:numpy.penfromtxt(“文件名”,delimiter = ‘,’ , dtype = str)
通过以上操作就打开了一个名为‘文件名’的txt文件(其实可以打开任何格式的文件)
2.关于创建一个array类型的数据(矩阵):numpy.array([1,2,3]) 通过这句话就创建了一个[1,2,3]的向量。当然矩阵也是可以的:numpy.array([[1,2,3],[1,2,3],[1,2,3]])这样就创建出了一个
( [1,2,3]
[1,2,3]
[1,2,3])样子的矩阵。
3.关于取值如何在矩阵中取出一个值呢?如果是向量我么可以采用类似于切片的方法取出一个值**print(xxx[1:3])取出xxx向量中第二到第四个值,如果是矩阵呢? 我们可以采用print(xxx[x,y])**取出x行y列的那个值
4.如何知道一个向量/矩阵是几行几列的呢?
**vector = numpy.array[4,5,6] print(vector.shape) 结果是:(3,) **
a = numpy.array([[1,2,3],[1,2,3],[1,2,3]]) print(a.shape) 结果是(3,3) 意思是三行三列
5.有一点非常重要 array中存放的数据必须是相同类型 不像列表里面可以存放任何值,如果numpy当中存放了不同数据类型的值 它会自动帮我们转换成相同数据类型的值
6.如果当前我们对array数据进行一个简单的操作的话,比如说是一个判断操作。
eg: numpy.array[5,6,7,5] == 5
将会输出:array([true,false,false,true],dtype = bool)
7.关于数据类型转换:
import numpy vectory = numpy.array(['1','2','3']) #现在是str类型
vectory.astype(float) #这样就将它转换成了float浮点型
# author: "HandSomeDk"
# Data: 2018/11/18
import numpy as np
#如何打开一个txt文件?
#world_alcohol = numpy.genfromtxt("world_alcohol.txt",delimiter = ',',dtype = str)
#print(world_alcohol)
#print(help(numpy.genfromtxt))
#vectory = numpy.array([5,45,78])
# proved = numpy.array([[5,45,78],[7,9,5],[1,2,3]])
#
# print(vectory)
# print(proved)
#quel_to_five = (vectory != 5)
#print(quel_to_five)
#print(vectory[quel_to_five]) #这里可以把所有判断为True的值打印出来
assigned = np.array([[1,2,3],
[4,5,6],
[7,8,9]])
although = np.array([[4,5,6],
[1,2,3],
[7,8,9]])
assignment = np.array(([[1,2,3],
[4,5,6],
[7,8,9],
[4,5,6]]))
print('现在是str类型:',assigned)
print('将它转换成float类型:',assigned.astype(float))
print('将矩阵按行求和:',assignment.sum(axis=1))
print('将矩阵按列求和:',assignment.sum(axis=0))
print('输出一个0~25的向量:',np.arange(25))
print('输出一个0~25的向量(并且改为5X5矩阵):',np.arange(25).reshape(5,5))
print('可以输出矩阵是几行几列的(找错误的时候可以用):',assignment.shape)
print('输出现在矩阵的维度:',assignment.ndim)
print('输出现在矩阵的元素个数:',assignment.size)
print('创建一个零矩阵(4X4)默认是float:',np.zeros((4,4)))
print('创建一个一矩阵(4X4X4)默认是float改为int:',np.ones((4,4,4),dtype=np.int32))
print('创建一个向量从x到y每次加z:',np.arange(5,25,5))
print('创建一个随机初始化矩阵:',np.random.random((5,5)))
print('设置一个起始值和一个终止值,平均的取z个值:',np.linspace(0,5,100))
print('矩阵的减法(维度相同的时候对应位置相减):',assigned - although)
print('矩阵减去一个整数(所有元素都减 其他的运算也是一样):',assigned - 1)
print('矩阵和一个数进行比较(所有元素都比 返回布尔值):',assigned < 2)
print('矩阵的内积(对应位置元素相乘):',assigned * although)
print('矩阵行乘列(a的行数要等于b的列数):',assigned.dot(although))
print('矩阵行乘列(a的行数要等于b的列数):',np.dot(assigned,although))
B = np.arange(3)
print(B)
print('e的x次方:',np.exp(B))
print('e的根号下x次方:',np.sqrt(B))
a = 10*np.random.random((2,12))
print(a)
print('对上面的随机数矩阵进行取整:',np.floor(a))
print('把矩阵变换成一个向量:',assigned.ravel())
assignment.shape = (2,6)
print('把矩阵改为两行六列:',assignment)
print('把矩阵转置:',assignment.T)
print('将矩阵按行拼接:',np.vstack((assigned,although)))
print('将矩阵按列拼接:',np.hstack((assigned,although)))
print('把一个矩阵按行平均分为两分',np.hsplit(a,2))
print('把一个矩阵按列平均分为三分',np.hsplit(a,3))
print('把一个矩阵按指定行分开(第二行和第三行):',np.vsplit(a.T,(3,4)))
print('把一个矩阵按指定列分开(第二列和第三列):',np.hsplit(a,(3,4)))
#======================注意这里============================
a = np.arange(12)
b = a
print(b is a)
b.shape = 3,4
print('注意a[0,4]:',a.shape)
print(id(a) ,'==', id(b),'\n 注意这里的 b = a 并不是普通的赋值,而是将b完全等同于a,对b进行的操作a也会跟着改变')
#====================浅复制(不推荐使用)=====================
c = a.view()
print(c is a)
c.shape = 2,6
c[0,4] = 123
print(a)
print(a.shape)
print(id(c),'!=',id(a),'\n 注意这里的c和a是不相同的(但是我们更改c的值a的值也会发生改变)')
#=====================copy一份======================
d = a.copy()
print(d is a)
d[0,0] = 99
print(d)
print(a,'\n 这里的a作为d的初始值 就是普通的赋值 两者毫无关系')
data = np.sin(np.arange(20).reshape(5,4))
print(data)
print('按列取出每一列中最大值的列标(整型):',data.argmax(axis=0))
print('按行取出每一行中最大值的行标(整型):',data.argmax(axis=1))
ind = data.argmax(axis=0)
print('取出每一列的最大值',data[ind,range(data.shape[1])])
a = np.arange(0,40,10)
print('将矩阵作为元素创建为一个新的矩阵',np.tile(a,(2,2)))
print('对矩阵中的元素按行进行排序:',np.sort(assigned,axis = 1))
print('对矩阵中的元素按列进行排序:',np.sort(assigned,axis = 0))