numpy 学习

#!/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:只有整数标量数组可以转换为标量索引,

  

原文地址:https://www.cnblogs.com/lifengwu/p/9814682.html