Python-Numpy

介绍:

NumPy系统是Python的一种开源的数组计算扩展。这种工具可用来存储和处理大型矩阵,比Python自身的嵌套列表(nested list structure)结构要高效的多(该结构也可以用来表示矩阵(matrix))。

常用:

1、genfromtxt()

import numpy

world_alcohol =numpy.genfromtxt("world_alcohol.txt",delimiter=",",dtype=str)

print(type(world_alcohol))

print(world_alcohol)

print(help(numpy.genfromtxt))

2、#The numpy.array() 数组

vector = numpy.array([5,10,15,20])

matrix = numpy.array([[5,10,15],[20,25,30],[35,40,45]])

print(vector)

print(matrix)

3、#ndarray.shape  figuer out how many element are in the array

vector = numpy.array([1,2,3,4])

print(vector.shape)

#for matrices the shape property contains atuple with a element

matrix =numpy.array([[5,10,15],[20,25,30]])

print(matrix.shape)

4、改变其中一个值,里面所有值都会发生改变(array里面数据类型要相同)

import numpy

numbers = numpy.array([1,2,3,4.0])

print(numbers)

numbers.dtype

5、matrix = numpy.array([
    [5,10,15],
    [20,25,30],
    [35,40,45]
])
print(matrix[:1])

注: X[:,1] 就是取所有行的第1个数据

X[1,:]即取第一维中下标为1的元素的所有值,输出结果:

6、matrix = numpy.array([
    [5,10,15],
    [20,25,30],
    [35,40,45]
])

print(matrix[:,0:2])

7、import numpy
vector = numpy.array([5,10,15,20])

vector == 10

8、判断一个数与矩阵中的数是否相符

matrix = numpy.array([
    [5,10,15],
    [20,25,30],
    [35,40,45]
])
matrix == 25

9、与或运算

import numpy
vector = numpy.array([5,10,15,20])
equal_to_ten_and_five = (vector == 10) & (vector == 5)

print (equal_to_ten_and_five)

import numpy
vector = numpy.array([5,10,15,20])
equal_to_ten_and_five = (vector == 10) | (vector == 5)

print (equal_to_ten_and_five)


10、import numpy
matrix = numpy.array([
    [5,10,15],
    [20,25,30],
    [35,40,45]
])
second_column_25 = matrix[:,1] == 25
print(second_column_25)
matrix[second_column_25, 1] = 10

print (matrix)

11、#修改类型
import numpy
vector = numpy.array(["1","2","3"])
print(vector.dtype)
print(vector)
vector = vector.astype(float)
print (vector.dtype)

print(vector)


12、#查看最大最小值
import numpy
vector = numpy.array([5,10,15])
#vector.min()

vector.max()

13、#按行求和
import numpy
matrix = numpy.array([
    [5,10,15],
    [20,25,30],
    [35,40,45]
])

matrix.sum(axis=1)

14、#按列求和
import numpy
matrix = numpy.array([
    [5,10,15],
    [20,25,30],
    [35,40,45]
])

matrix.sum(axis=0)

15、#整体变换,变成3行5列的矩阵
import numpy as np#指定别名np代替numpy
print (np.arange(15))
a = np.arange(15).reshape(3,5)

a

16、#行和列分别为多少

a.shape

#二维矩阵

a.ndim

#值类型

a.dtype.name

#当前有多少元素

a.size

#初始化矩阵3*4

np.zeros((3,4))

#构造值全是1

np.ones((2,3,4),dtype=np.int32)

#得出序列结果

np.arange(10,30,5)#从10开始 每5个一加,小于30

#指定结构,得出序列结果

np.arange(0.,2,0.3)#从0开始 每次加0.3加,小于2

#结构

np.arange(12).reshape(4,3)

17、#random函数 得到矩阵 2*3
np.random.random((2,3))#random函数 得到矩阵 2*3
18、from numpy import pi

np.linspace(0,2*pi,100)#指定一个区间 在0~2*pi之间取100个数

np.sin(np.linspace(0,2*pi,100))

20、#numpy数学运算
a = np.array([20,30,40,50])
b = np.arange(4)
print(a)
print(b)
#b
c = a-b
print(c)
c = c-1
print(c)
b**2
print(b**2)

print(a<35)#判断值是否小于35

#矩阵乘法
A = np.array([[1,1],
             [0,1]])
B = np.array([[2,0],
            [3,4]])
print(A)
print('------')
print(B)
print('------')
print(A*B)#对应位置进行相乘
print('------')
print(A.dot(B))#矩阵的乘法 行*列
print('------')

print(np.dot(A,B))#A和B进行矩阵相乘

21、#其他操作
import numpy as np
B = np.arange(3)
print(B)
print (np.exp(B))#计算B的多少次幂

print (np.sqrt(B))#对数组求根号

#向下取整 floor 3.5---3   ,  2.1 ---- 2
a = np.floor(10*np.random.random((3,4)))
print(a)
print('------')
#a.shape
##flatten the array
print (a.ravel())#矩阵拉平成向量[ 6.  6.  3.  2.  3.  4.  2.  4.  4.  9.  5.  7.]
print('------')
a.shape = (6,2)#shape 6*2
print(a)
print('------')
print(a.T)#求转置

#a.reshape(3,-1)#行数

#矩阵拼接
import numpy as np
a = np.floor(10*np.random.random((2,2)))#取整,2*2结构
b = np.floor(10*np.random.random((2,2)))
print(a)
print('---')
print(b)
print('---')
print(np.vstack((a,b)))#vstack竖着拼接,hstack横着拼接

#np.hstack((a,b))

#分割
a = np.floor(10*np.random.random((2,12)))
print (a)
print('---')
print (np.hsplit(a,3))#按照行进行横向切分 a(待切分),切分成3份
print('---')
#hsplit纵向切分
print (np.hsplit(a,(3,4)))#指定切分位置3-4
a = np.floor(10*np.random.random((12,2)))
print ('----')
print (2)

np.vsplit(a,3)


22、#数据复制 
a = np.arange(12)
b = a
print(b is a)#c跟a相同
b.shape = 3,4
print(a.shape)
print(id(a))#名字不同指向的区域相同,改变a改变b,都会改变区域的值

print(id(b))

#复制操作
c = a.view()
print (c is a)#c跟a不同
c.shape = 2,6
print (a.shape)
c[0,4] = 1234#c和a共用一套值
print (a)
print (id(a))

print (id(c))

#常用copy函数
d = a.copy()#用a的值做d的值初始化
d is a
d[0,0] = 9999#d改变
print (d)#一个新的值

print (a)#a不变

23、#排序,索引
import numpy as np
data = np.sin(np.arange(20)).reshape(5,4)#5*4格式
print (data)
ind = data.argmax(axis=0)#找哪个列是最大的,索引
print (ind)
data_max = data[ind,range(data.shape[1])]#通过找索引把最大值拿出来

print (data_max)

#.tile操作
a = np.arange(0,40,10)#0-40,10加一次
print(a)
b = np.tile(a,(2,2))#行编程原来两倍,列也变成了原来的两倍
print (b)

#排序
a = np.array([[4,3,5],[1,2,1]])
print(a)
print('------')
b = np.sort(a,axis=1)#对当前的数组排序
print(b)
#b
a.sort(axis=1)
print('------')
print (a)
a = np.array([4,3,1,2])
j = np.argsort(a)#求最大值的索引
print ('------')
print (j)
print ('------')
print (a[j])

猜你喜欢

转载自blog.csdn.net/qq_27262727/article/details/79546282