numpy库—总结


import numpy as np  #1

a=np.array([1,2,3])    # 创建数组
print("a:{}\ntype(a):{}\na.dtype:{}\na.ndim:{}\na.size:{}\na.shape:{}\na.itemsize:{}\n"\
      .format(a,type(a),a.dtype,a.ndim,a.size,a.shape,a.itemsize))                   # 类型、数据类型、轴数量、数组长度、数组的型

b=np.array([[1.3,2.4],[0.3,4.1]])
print("b:{}\ntype(b):{}\nb.dtype:{}\nb.ndim:{}\nb.size:{}\nb.shape:{}\nb.itemsize:{}\n"\
      .format(b, type(b), b.dtype, b.ndim, b.size, b.shape,b.itemsize))         # 类型、数据类型、轴数量、数组长度、数组的型


print("np.arange(0,6,0.8):{}\n".format(np.arange(0,6,.8)))                    # 创建0-6之间以0.8为步长的数组
print("np.linspace(0,10,5):{}\n".format(np.linspace(0,10,5,dtype=complex)))   # 创建0-10之间含五个元素的数组,数据类型为复数
print("np.arange(0,12).reshape(3,4):\n{}\n".format(np.arange(0,12).reshape(3,4)))   # 创建矩阵
print("np.random.random((3,3)):\n{}\n".format(np.random.random((3,3))))           # 创建随机数矩阵

# 基本操作
d=np.arange(4)
e=np.arange(4,8)
print("d=np.arange(4)\ne=np.arange(4,8)\nd:{}\nd+4:{}\nd*2:{}".format(d,d+4,d*2))     # 数组元素自加、减、乘
print("d+e:{}\nd-e:{}\nd*e:{}".format(d+e,d-e,d*e))                                   # 数组元素相加、减、乘
print("d*np.sin(e):{}\nd*np.sqrt(e):{}\n".format(d*np.sin(e),d*np.sqrt(e)))           # 数组元素数学函数

A=np.arange(0,9).reshape(3,3)
B=np.ones((3,3))                                     # 创建单位矩阵
print("A=np.arange(0,9).reshape(3,3)\nB=np.ones((3,3))\nA:\n{}\nB:\n{}\nA*B:\n{}\n\
np.dot(A,B):\n{}\nA.dot(B):\n{}\nnp.dot(B,A):\n{}\n"\
      .format(A,B,A*B,np.dot(A,B),A.dot(B),np.dot(B,A)))     # 矩阵、矩阵乘

import numpy as np    #2

A=np.ones((3,3))                   # 创建单位矩阵
B=np.zeros((3,3))                  # 创建0矩阵
C=np.vstack((A,B))                # 增加行的方式连接A,B 
D=np.hstack((A,B))                # 增加列的方式连接A,B
print("C:\n{}\nD:\n{}\n".format(C,D))

a=np.array([0,1,2])               # 创建数组
b=np.array([3,4,5])
c=np.array([6,7,8])
d=np.row_stack((a,b,c))        # 按行合并数组为矩阵
e=np.column_stack((a,b,c))     # 按列合并数组为矩阵
print("d:\n{}\ne:\n{}\n".format(d,e))

E=np.arange(16).reshape((4,4))    # 生成矩阵
[F,G]=np.vsplit(E,2)         # 按行等分矩阵
[H,J]=np.hsplit(E,2)         # 按列等分矩阵
print("E:\n{}\nF:\n{}\nG:\n{}\nH:\n{}\nJ:\n{}\n".format(E,F,G,H,J))
np.split(E,[1,3],axis=1)
np.split(E.[1,3],axis=0)
import numpy as np #3 
A
=np.arange(10,19).reshape((3,3))
print(
"A:\n{}\nA[0:2,0:2]:\n{}\nA[[0,2],0:2]:\n{}\n".format(A,A[0:2,0:2],A[[0,2],0:2])) # 切片操作

for item in A.flat: # 遍历每个元素
  print(item)
B
=np.apply_along_axis(np.mean,axis=0,arr=A) # 按列对A中的元素聚合
C
=np.apply_along_axis(np.mean,axis=1,arr=A) # 按行对A中的元素聚合
print(
"\nB:\n{}\nC:\n{}\n".format(B,C))

D
=np.random.random((4,4))
print(
"D:\n{}\n".format(D)) print("D<0.5:\n{}\nD[D<0.5]:\n{}\n".format(D<0.5,D[D<0.5])) # 按条件选取元素

E
=np.random.random(12)
F
=E.reshape(3,4)
print(
"\nE:{}\nF:\n{}\nF.transpose():\n{}\nF.ravel():\n{}\nF:\n{}\n"\
  .format(E,E.reshape(
3,4),F.transpose(),F.ravel(),F))           # 重定义、转置、降为一维

import numpy as np #4
a=np.array([1,2,3,4])
b=a.copy() # 得到a的副本 (注意:数据赋值,切片得到的是调用,指向原对象,用copy()函数才能得到副本;而Python列表切片得到的是副本)
m=np.arange(6)reshape(3,1,2)
n=np.arange(6)reshape(3,2,1)
print("m+n:{}".format(m+n)) # 相加前会先使用广播机制补齐元素

strc=np.array([],dtype=("b1,i4,u1,f2,c8")) # 结构化数组
strc["u1"] # 选取数据类型为u1的数据
strc.dtype.names=('name1','name2','name3','name4','name5') # 为各数据类型指定新名称

np.save("文件名",数组名) # 将数据按二进制形式存储进文件
np.load("文件名.npy") # 读取文件

np.genfromtxt("文件名.txt",delimiter=",",names=True) # 读取文件,delimiter指定分隔符,names用于指定是否包含列标题


import numpy as np #5
arr=arr.astype(np.int32)  # 将数组的元素数据类型转换为int32

n_str= np.array(['1.2','2.3','3.2141'], dtype=np.string_)
n_str=n_str.astype(float) # 将数组的string元素转换为float (此处写的是float 而不是np.float64, 会将python类型映射到等价的dtype上)



 

posted @ 2018-07-22 15:27  todaynowind  阅读(364)  评论(0编辑  收藏  举报