numpy教程

1.numpy数组及运算

1.1创建numpy数组

import numpy as np

# 创建一个数组
a=np.array([2,2,3,4])

b=np.array([2,3,4,5],dtype=np.int)
#dtype是用来指定类型。int默认为64,要32时要用int32

c=np.array([[1,2,3],
           [4,5,6]])

#生成全部为0的矩阵(3行4列)
d=np.zeros((3,4))

#生成全部为1 的矩阵(3行4列)
e=np.ones((3,4))

#生成10到20的且间隔为2的矩阵
f=np.arange(10,20,2)

#生成一个某行某列的区间矩阵
h=np.arange(12).reshape((3,4))

#生成一个线段
i=np.linspace(1,10,5)

#生成一个2行3列的矩阵
j=np.linspace(1,10,6).reshape((2,3))

1.2.numpy数组的运算

import numpy as np
# 两个矩阵运算
a=np.array([10,20,30,40])

b=np.arange(4)
#生成一个0到3到矩阵

print(a,b)
print(b<3)
c=a-b
d=a+b
e=a*b
f=b**2

# 矩阵与数值运算
z=np.array([1,2,3,4])
print(z*2)
print(z/2)
print(z//2)
print(z+2)
print(z-2)
print(z**2)

# 多重矩阵的运算
m=np.array([[1,1],
            [0,1]])

n=np.arange(4).reshape((2,2))

c=a*b#单个相乘
c_dot=np.dot(a,b)#矩阵相乘
c_dot_2=a.dot(b)
print(c)
print(c_dot)

1.3修改数组中的元素

import numpy as np

x=np.arange(8)

#print(x)
# 返回新数组,在尾部追加一个元素
np.append(x,8)
# 返回新数组在指定位置插入元素,下方1为指定的下标索引值
np.insert(x,1,8)
# 使用下标方式来修改数组
x[3]=8


# 多重矩阵修改

y=np.array([[1,2,3],
            [4,5,6],
            [7,8,9]])

# 修改第一行第三列的元素值
x[0,2]=4
# 切片,把行下标与列下标大于等于1的元素值设置为1
x[1:,1:]=1
# 同时修改多个值
x[1:,1:]=[1,2]

1.4数组中的函数

import numpy as np

a=np.random.random((2,4))

print(a)
print(np.sum(a,axis=1))
print(np.min(a))
print(np.max(a))
#axis=1时,表示列中
#axis=0时,表示在行中操作


A=np.arange(2,14).reshape((3,4))

print(np.argmin(A))
print(np.argmax(A))
#总共12位数,索引最小为0,最大为11


#求平均值的三种方法
print(np.mean(A))
print(A.mean())
print(np.average(A))

#求中位数
print(np.median(A))

#求累加
print(np.cumsum(A))

#求累差
print(np.diff(A))

#找出非零值,输出坐标
print(np.nonzero(A))

#排序逐行
A=np.arange(2,14).reshape((3,4))
print(np.sort(A))

#矩阵的反向
print(np.transpose(A))

#截取矩阵(让所有小于5的数都等于5,让左右大于9的数都等于9)
print(np.clip(A,5,9))
print(np.mean(A,aixs=0))

1.5数组的索引

import numpy as np

A=np.arange(3,15)

print(A)
print(A[3])
B=np.arange(3,15).reshape((3,4))
print(B)
print(B[1][1])
print(B[2,1])
print(B[2,:])#用:代表此行的所有的元素
print(B[1,1:2])#用1:2表示索引坐标的数值


#用for循环,输出各个行
for row in A:
    print(row)

#for循环,输出各个列
for column in A:
    print(column)

C=np.arange(3,15).reshape((3,4))
print(C)
# 转换为逆矩阵
print(C.T)
# 按行输出
for column in C.T:
    print(column)

# 将数组转化为单行的数组
print(C.flatten())
# 遍历单行数组中的所有元素
for item in A.flat:
    print(item)

例题

将数组 np.arange(20)转变为 4 行 5 列的二维数组,并执行交换第 1 行和第 2 行,交换第 1 列和第 2 列。

import numpy as np

# 生成一个4行5列的二维数组
a=np.arange(20).reshape(4,5)
print("交换前",'\n',a)

# 交换第一行与第二行,第一列与第二列
a[[0,1],:]=a[[1,0],:]
# [[0,1],:]表示为第一行、第二行,逗号前是表示行的参数,逗号后的表示列,冒号表示所有列
a[:,[0,1]]=a[:,[1,0]]
# [:,[0,1]]表示为第一列、第二列,逗号前是表示行的参数,逗号后的表示列,冒号表示所有行
print("交换后:",'\n',a)

1.6修改数组中符合条件的元素

# 寻找数组 np.random.randint(1,10,size=(5,5))中所有的奇数,并将所有
# 奇数替换为 0. 

import numpy as np

a=np.random.randint(1,10,size=(5,5))

# where方法
a[np.where(a%2==1)]=0
print(a)

# 布尔索引
idex=(a%2==1)  #布尔索引返回下标
a[idex]=0
print(a)

x=np.random.rand(10)
# 返回的布尔的数组
print(x>0.5)
# 返回符合条件的数组
print(x[x>0.5])
# 测试数组是否全部小于某个值
print(np.all(x<1))
# 可以进行复合运算
print(x[(x%2==0)&(x<1)])

a=np.array([1,2,3])
b=np.array([3,2,1])
# 对数组对应位置上的元素值进行比较
print(a>b)
# 返回a数组对应位置上大于b数组的元素值
print(a[a>b])

1.7合并与分割


合并
import numpy as np

A=np.array([1,1,1])
B=np.array([2,2,2])

#上下合并
C=np.vstack((A,B))
#左右合并
D=np.hstack((A,B))

print(D)
print(A.shape,C.shape)

print(A.T.shape)



分割
import numpy as np

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

print(A)

#print(np.split(A,3,axis=0))
#print(np.array_split(A,3,axis=1))

print(np.vsplit(A,3))
print(np.hsplit(A,2))

 

 

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

几两春秋梦_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值