知识点:
import numpy as np
'''
列表list表示矩阵:
[[1,2,3],
[2,3,4]]
'''
# 一般使用list类型 然后转换成数组
array = np.array([[1,2,3],
[2,3,4]])
print(array)
# 维度 数组名.ndim
# 形状 数组名.shape
# 元素个数 数组名.size
print('number of dim:',array.ndim)
print('shape:',array.shape)
print('size:',array.size)
print('----------一维类型-----------')
# dtype可以是int 也可以是float
array1 = np.array([1,2,23],dtype=np.float)
print(array1.dtype)
print('----------二维类型-----------')
array2= np.array([[1,3,5],
[3,4,5]])
print(array2)
print('----------元素全为0的矩阵-----------')
a = np.zeros((2,3))
print(a)
print('----------元素全为1的矩阵-----------')
b = np.ones((2,3))
c = np.ones((2,3),dtype=float)
print('b type:%s , c type:%s'%(b.dtype,c.dtype))
print(b)
print(c)
print('----------np.arange自动生成数组-----------')
# np.arange(起始元素,结尾元素但取不到,步长)
# reshape((行数,列数))
array3 = np.arange(1,13,1)
array3_reshape = array3.reshape((3,4))
print(array3)
print(array3_reshape)
print('----------np.linspace自动生成数组-----------')
# np.linspace(起始元素,结尾元素取得到,多少段)
array4 = np.linspace(1,14,20)
print(array4)
print(array4.reshape((4,5)))
知识点:
import numpy as np
print('------一维运算--------')
a = np.array([2,3,4,5])
b = np.arange(4)
print(b)
chengfang = a**2
print(chengfang)
jian = b-a
print(jian)
jia = b+a
print(jia)
sin = 10*np.sin(a)
print(sin)
cos = np.cos(a)
print('------判断数组元素范围------')
# 判断数组元素范围
print(a>=3)
print('------二维数组运算------')
array1 = np.array([[1,2],
[3,5]])
array2 = np.linspace(2,8,4).reshape((2,2))
# print(array1)
# print(array2)
# 数组1*数组2 表示元素逐个相乘
c = array1*array2
# 矩阵乘法 np.dot(数组1,数组2) 或者 数组1.dot(数组2)
c_dot =np.dot(array1,array2)
c_dot_2 = array1.dot(array2)
print(c)
print(c_dot)
print(c_dot_2)
print('------随机生成元素------')
random_array = np.random.random((2,3))
print(random_array)
# 求数组里面的最大值,min,sum np.max(数组名)
print(np.max(random_array))
print(np.min(random_array))
print(np.sum(random_array))
# axis=1 行运算 axis=0 列运算
print(np.sum(random_array,axis=1))
print('------打印索引值------')
# 打印最小值索引值 np.argmin() 最大值索引值 np.argmax()
# 数组的平均值 np.mean(数组名) 数组名.mean() np.average(数组名) 数组名.average()
# np.cumsum(数组名) 元素值累加
# np.diff(数组名) 两个元素之间的差
# np.nonzero(数组名) 输出非零值的索引值
# np.sort(数组名) 每一行开始排序 np.transpose(数组名) 表示矩阵转置
# np.clip(数组名,数组中的最小值,数组中的最大值)
A = np.arange(2,14).reshape((3,4))
print(np.argmin(A))
print(np.argmax(A))
print(np.mean(A))
print(np.average(A))
print(np.cumsum(A))
print(np.diff(A))
print(np.nonzero(A))
print(np.clip(A,3,8))
知识点:
import numpy as np
# 索引值从0开始 数组名[index]取值
a = np.arange(3,15)
print(a)
print(a[3])
b = a.reshape((3,4))
print(b)
print(b[1,1])
print(b[1][1])
print(b[:,0])
# 数组循环,自动迭代行。如果需要迭代列,则转置矩阵 数组
for row in b:
print(row)
for column in b.T:
print(column)
# 如果需要迭代每一个元素 则用数组名.flat拉平成一行
print(b.flatten())
for item in b.flat:
print(item)
知识点:
import numpy as np
print('---------合并---------')
a = np.array([1,1,1])
b = np.array([2,2,2])
# vertical stack 垂直合并 np.vstack(())
c = np.vstack((a,b))
# horizontal stack 水平合并 np.hstack()
d = np.hstack((a,b))
print(c.shape,d.shape)
# 一维数组变成二维数组 数组名[np.newaxis,;],也可以使用reshape()更加方便
# np.concatenate((数组1,2,3....),axis=0) 多个数组合并
print(a)
print(a.shape,a[np.newaxis,:].shape)
print(a)
print('---------分割---------')
# np.split(数组名,多少列,axis=1表示对横向切割,列没变)
c = np.arange(12).reshape((3,4))
print(c)
print(np.split(c,2,axis=1))
print(np.vsplit(c,3))
print(np.split(c,3,axis=0))
print('---------copy---------')
# 赋值是指向同一个地址,改变其中的数组一个元素值,另外的数组也会发生改变
# 深拷贝 数组名.copy() 只会复制,但是数组之间不会关联
a1 = np.arange(4)
a2 = a1
print(a1)
a1[0]=0.5 # 奇怪的是改为浮点数不会改变,因为默认整型
print(a1)
print(a2)
a3 = a1.copy()
a1[0]=10
print(a1)
print(a2)
print(a3)
链接: 【莫烦Python】Numpy & Pandas (数据处理教程).