python基础——numpy

1.创建数组

不晓得为什么在原的py文件下不能运行了,但是换个文件夹就好了。。。。/

1.1 np.array()
print(np.array([1,2,3]))    #创建一维数组
print(np.array([[1,2,3,4],[1,4,5,6]]))   #二维
print(np.array([[[1,2,],[4,5,]],[[7,8,],[1,4,]]]))  #三维

运行结果:

D:\anaconda\python.exe D:/pythonb/图像处理/边缘检测.py
[1 2 3]
[[1 2 3 4]
[1 4 5 6]]
[[[1 2]
[4 5]]
[[7 8]
[1 4]]]

1.2 np.zero()

通过zeros()创建全为0的数组:

a=np.zeros((3,3))
print(a)
print(np.zeros([2,3]))  #2行3列
print(np.zeros((3,4,1)))

运行结果:

D:\anaconda\python.exe D:/pythonb/图像处理/边缘检测.py
[[0. 0. 0.]
[0. 0. 0.]
[0. 0. 0.]]
2行3列: [[0. 0. 0.]
[0. 0. 0.]]
3维4行1列: [[[0.]
[0.]
[0.]
[0.]]
[[0.]
[0.]
[0.]
[0.]]
[[0.]
[0.]
[0.]
[0.]]]

1.3 np.ones()

创建元素为1的数组:

print(np.ones([3,4]))

运行结果:

D:\anaconda\python.exe D:/pythonb/图像处理/边缘检测.py
[[1. 1. 1. 1.]
[1. 1. 1. 1.]
[1. 1. 1. 1.]]

1.4 其它创建方式
1.4.1 arange()

在3-8之间每隔2个生成一维数组:

print(np.arange(3,9,2))    #包左不包右:3 5 7
1.4.2 linspace()

在1-9之间生5个等差数组:

print(np.linspace(1,9,5))  #包左也包右
1.4.3 logspace()

在101到103之间生成3个等比数组:

a = np.logspace(1,3,3)     
print('a=',a)
1.4.4 np.random.randoom()

创建随机数:

b = np.random.random((3,3))
print(b)
1.4.5 np.random.randint()

创建随机整数

c = np.random.randint(9,19,(3,2))
print(c)
1.4.6 random.randn()

随机生成 3行3列 的标准正太分布:

print(np.random.randn(3,3))   

运行结果:

D:\anaconda\python.exe D:/pythonb/图像处理/边缘检测.py
[3 5 7]
等差数列 [1. 3. 5. 7. 9.]
等比数列: [ 10. 100. 1000.]
随机数: [[0.25940958 0.52944639 0.51468323]
[0.24709435 0.30563451 0.06538674]
[0.54547719 0.99257664 0.06971004]]
随机整数: [[15 16]
[13 16]
[12 18]]
正太分布: [[ 0.69909865 2.31059571 0.58612419]
[ 0.73048041 1.15582373 -1.03387736]
[ 2.04943559 0.83203756 0.78287982]]

2.访问数组

a = np.array([[[1,5,6],[1,6,6]],[[5,6,2],[2,3,8]]])
print(a)
print(a[1])
print(a.shape)

print(20*'_')
arr = np.random.randint(1,9,(4,5))    #生成4行5列元素值在1-9之间的数组
print(arr)
print(arr.shape)

运行结果:

D:\anaconda\python.exe D:/pythonb/图像处理/边缘检测.py
[[[1 5 6]
[1 6 6]]
[[5 6 2]
[2 3 8]]]
[[5 6 2]
[2 3 8]]
(2, 2, 3)


[[1 7 8 6 4]
[2 3 5 6 1]
[2 2 7 1 2]
[2 7 4 4 7]]
(4, 5)

3.修改数组形状

法一:
arr = np.random.randint(1,9,(4,5))    #4行5列
print(arr)
arr.shape = (5,4)        #修改后:5行4列
print(arr)
arr.shape = (2,-1)       #修改后:2行x列
print(arr.shape)
print(arr)
法二:
arr = np.random.randint(1,9,(4,5))
arr1 = arr.reshape(5,4)
print(arr1)
print(arr.reshape(2,10))

运行结果:

[[1 1 7 7 6]
[3 2 2 3 7]
[2 3 3 8 1]
[7 8 4 3 4]]
5行4列: [[1 1 7 7]
[6 3 2 2]
[3 7 2 3]
[3 8 1 7]
[8 4 3 4]]
2行x列: (2, 10)
[[1 1 7 7 6 3 2 2 3 7]
[2 3 3 8 1 7 8 4 3 4]]


[[8 1 8 2]
[1 2 3 5]
[5 2 2 8]
[1 3 8 4]
[1 7 4 8]]


[[8 1 8 2 1 2 3 5 5 2]
[2 8 1 3 8 4 1 7 4 8]]

4.数组的标量运算

import numpy as np
arr = np.arange(1,10,3)
print(arr)
print(arr+2)
print(arr*2)
print(20*'_')
a= np.array([[1,2,2],[3,4,3],[1,4,5]])
b= np.array([[1,2,2],[1,4,5],[2,3,2]])
print(a+b)
print(a*b)           #相同位置对应相乘
print(np.dot(a,b))   #矩阵形式相乘,第一个数组的列数需和第二个数组的行数相等

c = np.ones([3,2])
print(np.dot(a,c))
print('数据类型:',c.dtype)

运行结果:

D:\anaconda\python.exe D:/pythonb/图像处理/边缘检测.py
[1 4 7]
[3 6 9]
[ 2 8 14]


[[2 4 4]
[4 8 8]
[3 7 7]]
[[ 1 4 4]
[ 3 16 15]
[ 2 12 10]]
[[ 7 16 16]
[13 31 32]
[15 33 32]]
[[ 5. 5.]
[10. 10.]
[10. 10.]]
数据类型: float64

5.数组的索引和切片

arr1 = np.random.randint(1,20,[2,2,3])
print(arr1)
print(arr1[1,0,2])   #三维中
print(20*'_')

arr2 =np.array([[2,1,3],[4,5,6],[5,6,8]])
print (arr2)
print(arr2[:,2])     #取第3列
print(20*'_')

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

print(arr3[ :, 0, 0])    #每个里第一行的第一个
print(arr3[0,:,0])       #第一个里面的第一列
print(arr3[1:,2,])       #第二个里面的第三行

运行结果:

D:\anaconda\python.exe D:/pythonb/图像处理/边缘检测.py
[[[ 4 1 9]
[10 19 18]]
[[ 9 13 10]
[16 15 16]]]
10


[[2 1 3]
[4 5 6]
[5 6 8]]
[3 6 8]


[[[1 2 3 4]
[4 5 6 2]
[5 5 6 2]]
[[1 5 6 8]
[5 8 9 6]
[4 5 6 2]]]
[1 1]
[1 4 5]
[[4 5 6 2]]

(by dxz 2020 04 15 20:55)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值