#!/usr/bin/env python # -*- coding:utf-8 -*- import numpy import numpy as np """ iris = numpy.genfromtxt("iris.data.csv",delimiter=',',dtype=str,skip_header=1) print(type(iris)) print(iris) #print(help(numpy.genfromtxt)) #数组 vector = numpy.array([5,10,15,20]) matrix = numpy.array([[5, 3, 2],[3, 7, 8],[2,5,8]]) print(vector.shape) #shape:了解数组的结构 print(matrix.shape) print(vector.dtype) #取出某个值 arr1 = iris[2,3] arr2 = iris[2,2] print(arr1) print(arr2) print(vector[0:3]) print(matrix[:,1]) print(matrix[:,0:2]) #判断数值是否相等,以及输出布尔值 print(matrix == 8) print(vector == 10) #输出布尔值 print(vector[vector == 10]) #返回值为10 print(matrix[:,1]==7) print(matrix[matrix[:,1]==7])#输出等于7的那一行 #判断与或 equal_to_ten_and_five = (vector == 10)&(vector ==5) equal_to_ten_or_five = (vector == 10)|(vector ==5) print(equal_to_ten_and_five) print(equal_to_ten_or_five) #改变类型值 ar1 = numpy.array(['1','2','3']) print(ar1.dtype) print(ar1) ar1 = ar1.astype(float) print(ar1.dtype) print(ar1) #求和 print(matrix.sum(axis=1)) #维度为1按行相加 print(matrix.sum(axis=0)) #维度为0按列相加 print(np.arange(15)) #15个值 a = np.arange(15).reshape(3,5) #reshape:3行,5列 print(a) print(a.ndim) #2维矩阵 a1 = np.zeros((3,4)) #3行4列的矩阵,全为0 print(a1) a2 = np.ones((2,3,4),dtype=np.int32) #全为1的矩阵 print(a2) a3 = np.arange(10,30,5) #数组从10到30,等差数组,差为5 print(a3) a4 = np.random.random((2,3)) #2行3列的随机数组 print(a4) from numpy import pi print(np.linspace(0,2*pi,100)) #在0到2pi上区100个数,这些数是平均取出的 #一些数学运算 a = np.array([20,30,40,50]) b = np.arange(4) print(a - b) #对应的地方相减 print(b**2) print(a<35) #输出布尔值 print(a*b) #对应位置相乘 a = np.array([[1,2],[2,3]]) b = np.array([[1,0],[0,3]]) print(a*b) print(a.dot(b)) #.dot是矩阵间相乘 print(np.hstack((a,b))) #横着拼接 print(np.vstack((a,b))) #竖着拼接 print(np.hsplit(a,2)) #切分成2个 hsplit(a,(3,4)):在3和4处分别切一刀 #矩阵的一些操作 m= np.random.random((3,4)) print(m) ma = np.floor(10*np.random.random((3,4))) # 随机取数,然后乘以0,floor:向下取整 print(ma) print(ma.ravel()) #矩阵拉成向量 ma.shape = (6,2) #print(ma) print(ma.T) #矩阵转置 #关于复制 a = np.arange(12) b=a #a和b的值是一样的,改变a,b也会变,反过来也是,这两个值的id也是一样的 print(b is a)#True b.shape = 3,4 print(a.shape) print(id(a)) print(id(b)) c = a.view() #浅复制 print(c is a) #False c.shape = 2,6 print(a.shape) c[0,4] = 1234 print(a) #改变了c之后,a也发生了变化,二者的id不同,但是指向的不同的东西是共用的值 print(id(a)) print(id(c)) d = a.copy() #二者的值是不一样的,指向的也不同 d[0,0] = 233 print(a) #排序和索引 data = np.sin(np.arange(20)).reshape(5,4) print(data) ind = data.argmax(axis=0) #axis=0:按列运算,找出最大值,输出索引,即那一列 print(ind) data_max = data[ind,range(data.shape[1])]#按照索引,输出这些值 print(data_max) e = np.arange(0,30,10) print(e) f = np.tile(e,(2,2)) #变成2X2的,行和列扩展了2倍 print(f) g = np.array([[4,3,5,2],[1,2,1,3]]) print(g) h = np.sort(g,axis=1) #按行排序 print(g) """ print('______________') x = np.array([5,3,7,1,4]) y = np.argsort(x) #s索引排序 print(y) print(x[y]) #TypeError:只有整数标量数组可以转换为标量索引,