Numpy基础
1.创建一维数组以及二维数组,二维数组类似于list of list
vector = numpy.array([5,10,15,20])
matrix = numpy.array([[5,10,15],[20,25,30],[35,40,45]])
print (vector)
print (matrix)
2.输出一维二维数组的结构:.shape !!!debug最常用
vector = numpy.array([5,10,15,20])
print (vector.shape)
matrix = numpy.array([[5,10,15],[20,25,30],[35,40,45]])
print (matrix.shape)
3.numpy array里面创造的必须是相同的结构,如果里面有一个浮点型数字就会把其他int型转为float,改成跟通用格式,eg:2.0
4.存取也是通过索引,切片也可以使用
5.判断集合中的元素,首先是&(且),接着是|(或)关系:
vector = numpy.array([5,10,15,20])
equal_to_ten_and_five = (vector == 10)&(vector == 5)
print (equal_to_ten_and_five)
输出的结果均为布尔型集合
vector = numpy.array([5,10,15,20])
equal_to_ten_and_five = (vector == 10)|(vector == 5)
print (equal_to_ten_and_five)
6.对整体作值的改变:
vector = numpy.array(["1","2","3"])
print(vector.dtype)
print (vector)
vector = vector.astype(float)#stype进行值类型转换
print (vector.dtype)
print (vector)
输出:
7.求极值操作:
vector = numpy.array([5,10,15,20])
vector.min()
8.求和并且axis=1:
matrix = numpy.array([
[5,10,15],
[20,25,30],
[35,40,45]
])
matrix.sum(axis=1)
输出:
Numpy常用函数
创建一个数组:
import numpy as np
print (np.arange(15))
使用reshape进行向量改变成为一个矩阵:
a = np.arange(15).reshape(3,5)
a
输出结果为:
打印行和列分别是多少:
a.shape
维度:
a.ndim
类型:
a.dtype.name
元素个数:
a.size
指定初始化值都为0,按照括号内的数字进行创建矩阵:
np.zeros((3,4))
输出:
从10开始,加5直到30:
np.arange(10,30,5)
生成随机矩阵:
np.random.random((2,3))
起始0,终点值6.28,中间平均取100个值:
from numpy import pi
np.linspace(0,2*pi,100)
a = np.array([20,30,40,50])
b = np.arange(4)
print(a)
print(b)
c = a-b
print(c)
c = c-1
print(c)
b**2
print (b**2)
print (a<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))#两种表达方式
e和根号操作:
import numpy as np
B = np.arange(3)
print(B)
print(np.exp(B))#e操作
print(np.sqrt(B))#根号操作
a = np.floor(10*np.random.random((3,4)))
print(a)
print('---------')
print(a.ravel())#矩阵转化为向量
print('---------')
a.shape = (6,2)
print(a)
print('---------')
print(a.T)#求转置
矩阵拼接:hstack
#矩阵拼接
import numpy as np
a = np.floor(10*np.random.random((2,2)))
b = np.floor(10*np.random.random((2,2)))
print(a)
print('------')
print(b)
print('------')
print(np.hstack((a,b)))
矩阵拆分:hsplit
a = np.floor(10*np.random.random((2,12)))
print(a)
print('------')
print(np.hsplit(a,3))#对a切分成3块,切分后都是单独的array,任意切分成三块,
print('------')
print(np.hsplit(a,(3,4)))#对指定位置进行切分
a = np.floor(10*np.random.random((12,2)))
print('------')
print(a)
np.vsplit(a,3)#横向切
复制
import numpy as np
a = np.arange(12)
b = a#通过复制操作,指向区域一致,通过等号赋值
print(b is a)
b.shape = 3,4
print (a.shape)
print (id(a))
print (id(b))
c = a.view()
print(c is a)
c.shape = 2,6
print (a.shape)
c[0,4] = 1234
print(a)
print(id(a))
print(id(c))
d = a.copy()
d is a
d[0,0] = 9999
print (d)
print (a)
import numpy as np
data = np.sin(np.arange(20)).reshape(5,4)
print (data)
ind = data.argmax(axis=0)
print (ind)
data_max = data[ind,range(data.shape[1])]
print (data_max)
a = np.arange(0,40,10)
print(a)
b = np.tile(a,(3,5))#.tile操作是扩展,进行行列扩展
print(b)
a = np.array([[4,3,5],[1,2,1]])
print(a)
print('-------')
b = np.sort(a,axis=1)
print(b)
a.sort(axis=1)
print('-------')
print(a)
a = np.array([4,3,2,1])
j = np.argsort(a)#求索引,最小值索引
print('-------')
print(j)
print('-------')
print(a[j])