python ——numpy

array

import numpy as np

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

print(a)
print(type(a))

b=np.array([[1,2,3,4,5],[1.1,1.2,1.3,1.4,1.5]])
print(b)
print(type(b))

c=np.array([[[1,2,3],[1.1,1.2,1.3],[2.1,2.2,2.3]]])
print(c)
print(type(c))

结果为:
[1 2 3 4 5]

array函数里面的属性 #1、dtype 设置数组里面的类型


import numpy as np
a=np.array([1,2,3],dtype=float)
print(a)

结果为:
[1. 2. 3.]

array函数里面的属性 #1、ndmin 设置是几维数组

import numpy as np
b=np.array([1,2,3],ndmin=3)
print(b)

结果为:
[[[1 2 3]]]

使用numpy里面arange函数创建数组

arange 和range一样,有开头 结尾 步长 不包括结尾


import numpy as np
a=np.arange(1,10,2,dtype=float)
print(a)

结果为:
[1. 3. 5. 7. 9.]

arrange创建数组

import numpy as np
a=np.arange(10)
print(a)
print(type(a))

结果为:
[0 1 2 3 4 5 6 7 8 9]


import math

b=[4,9,81]

for i in b:
    print(i)
    print(math.sqrt(i))

结果为:
4
2.0
9
3.0
81
9.0

创建随机数组

import numpy as np
import random

a=np.random.random(size=5)
print(a)

b=np.random.random(size=(3,4))
print(b)

c=np.random.random(size=(3,3,3))
print(c)

结果为:
[0.11274742 0.39388927 0.67193314 0.81790309 0.88180793]
[[0.34206265 0.90242451 0.3051525 0.71890408]
[0.91753266 0.3137057 0.63745194 0.59405959]
[0.40491016 0.40193504 0.34734465 0.27694703]]
[[[0.46388267 0.35561711 0.83421393]
[0.17750282 0.60202124 0.21789804]
[0.6538654 0.83907576 0.99678365]]

[[0.34551502 0.90610005 0.74973911]
[0.06085158 0.34347322 0.44291717]
[0.26234683 0.27693439 0.62723777]]

[[0.62001118 0.40786935 0.95886046]
[0.76217079 0.12078105 0.53833536]
[0.99458626 0.29585276 0.28201769]]]

生成0—5之间的整数 一维数组

import numpy as np
a=np.random.randint(6,size=10)
print(a)

结果为:
[1 3 4 1 4 3 1 2 4 4]

生成5-10之间的整数 二维数组

import numpy as np
b=np.random.randint(5,11,size=(4,3))
print(b)

结果为:
[[ 5 9 6]
[ 8 5 9]
[ 6 10 7]
[ 6 7 10]]

生成5-10之间的整数 三维数组

import numpy as np
c=np.random.randint(5,11,size=(2,4,3))
print(c)

结果为:
[[[ 9 10 10]
[ 9 6 8]
[10 8 10]
[ 5 6 6]]

[[ 6 5 8]
[ 5 10 9]
[ 5 10 9]
[ 6 8 5]]]

dtype的使用

d=np.random.randint(11,size=10,dtype=np.int64)
print(f"dtype的是{d.dtype}")

结果为:
dtype的是int64

randon.randn()的使用 randn返回一个或一组样本具有标准正态分布(期望为0,方差为1)

import numpy as np
f=np.random.randn(4)
print(f)

结果为:

[ 0.3807353 -0.52129666 1.39367398 -1.23370331]

randon.randn()创建二维数组 #randon.randn()创建二维数组

a=np.random.randn(2,3)
print(a)

结果为:
[[-0.32910598 -0.53971878 0.87787102]
[ 0.89914911 -1.66847766 0.88994348]]

randon.randn()创建三维数组

b=np.random.randn(2,2,3)
print(b)

[[[-0.64362606 -0.21114566 1.87260459]
[ 1.43561913 -0.45609375 -1.01721838]]

[[-0.23912739 1.11548996 0.94927785]
[-0.48655253 0.00950202 0.80310157]]]

切片和索引

import numpy as np
a=np.arange(10)
print(a)
print(a[9])
print(a[-1])
print(a[-3])
import numpy as np
a=np.arange(10)
print(a)
print(a[9])
print(a[-1])
print(a[-3])

结果为:
[0 1 2 3 4 5 6 7 8 9]
9
9
7

import numpy as np
a=np.arange(10)
print(a)
print(a[1:8:2])

结果为
[0 1 2 3 4 5 6 7 8 9]
[1 3 5 7]

切片负索引

import numpy as np
print(a)
print(a[::-1])
print(a[-9:-3:1])

结果
[0 1 2 3 4 5 6 7 8 9]
[9 8 7 6 5 4 3 2 1 0]
[1 2 3 4 5 6]

二维数组的索引

import numpy as np
a=np.arange(1,13)
print(a)

a=a.reshape((3,4))
print(a)

print(a[2])

print(a[2][1])

结果
[ 1 2 3 4 5 6 7 8 9 10 11 12]
[[ 1 2 3 4]
[ 5 6 7 8]
[ 9 10 11 12]]
[ 9 10 11 12]
10

二维数组的切片

import numpy as np
a=np.arange(1,13)

a=a.reshape((3,4))
print(a)

print(a[::,::])

结果
[[ 1 2 3 4]
[ 5 6 7 8]
[ 9 10 11 12]]
[[ 1 2 3 4]
[ 5 6 7 8]
[ 9 10 11 12]]

获取所有行和列

print(a[::,::]
结果
[[ 1  2  3  4]
 [ 5  6  7  8]
 [ 9 10 11 12]]

获取所有行和部分列

获取所有行和第二列

print(a[:,1])

结果
[ 2 6 10]

获取第二行第一列

print(a[1,0])

结果
5

获取所有行的第一列

print(a[:,0:1])

结果
[[1]
[5]
[9]]

获取所有行的第一二列

print(a[:,0:2])

[[ 1 2]
[ 5 6]
[ 9 10]]

获取部分行 所有列 获取奇数行

print(a[:,:])
print(a[::2,:])

结果
[[ 1 2 3 4]
[ 5 6 7 8]
[ 9 10 11 12]]
[[ 1 2 3 4]
[ 9 10 11 12]]

获取部分行 部分列 获取奇数行奇数列

print(a[:,:])
print(a[::2,0:2])
结果
[[ 1 2 3 4]
[ 5 6 7 8]
[ 9 10 11 12]]
[[ 1 2]
[ 9 10]]

获取第二行第三列的数

print(a[2][3])

结果
12

获取不同行不同列

print(a[2][1],a[1][1])

结果
10 6

使用坐标获取不同行不同列

print(a[(2,1),(1,1)])

结果
[10 6]

负索引的使用

print("最后一行")
print(a[-1])
print("行倒序")
print(a[::-1])

结果
最后一行
[ 9 10 11 12]
行倒序
[[ 9 10 11 12]
[ 5 6 7 8]
[ 1 2 3 4]]
:行列倒序
[[ 1 2 3 4]
[ 5 6 7 8]
[ 9 10 11 12]]

print(":行列倒序")
print(a)
print(a[::-1,::-1])

结果
[[ 1 2 3 4]
[ 5 6 7 8]
[ 9 10 11 12]]
:行列倒序
[[12 11 10 9]
[ 8 7 6 5]
[ 4 3 2 1]]

转置 就是把行数和列数互换


import numpy as np
a=np.arange(1,25).reshape(8,3)
print(a)
b=a.transpose()
print(b)
print(b.shape)

结果为:
[[ 1 2 3]
[ 4 5 6]
[ 7 8 9]
[10 11 12]
[13 14 15]
[16 17 18]
[19 20 21]
[22 23 24]]
[[ 1 4 7 10 13 16 19 22]
[ 2 5 8 11 14 17 20 23]
[ 3 6 9 12 15 18 21 24]]
(3, 8)

对于二维数组 转置还可以用 .T

d=np.arange(1,13).reshape(4,3)
print(d)
e=d.T
print(e)

结果
[[ 1 2 3]
[ 4 5 6]
[ 7 8 9]
[10 11 12]]
[[ 1 4 7 10]
[ 2 5 8 11]
[ 3 6 9 12]]

对三维数组进行转置

a=np.arange(1,25).reshape(2,3,4)
print(a.shape)
print("三维数组  a[i][j][k]  进行转置 默认 把i和k互换位置")
b=a.transpose()
print(b)
print(b.shape)

(2, 3, 4)
三维数组 a[i][j][k] 进行转置 默认 把i和k互换位置
[[[ 1 13]
[ 5 17]
[ 9 21]]

[[ 2 14]
[ 6 18]
[10 22]]

[[ 3 15]
[ 7 19]
[11 23]]

[[ 4 16]
[ 8 20]
[12 24]]]
(4, 3, 2)

对三维数组进行转置

特定的转置

a=np.arange(1,25).reshape(2,3,4)
print(a.shape)
b=np.transpose(a,(1,2,0))
print(b)
print(b.shape)

结果为
(2, 3, 4)
[[[ 1 13]
[ 2 14]
[ 3 15]
[ 4 16]]

[[ 5 17]
[ 6 18]
[ 7 19]
[ 8 20]]

[[ 9 21]
[10 22]
[11 23]
[12 24]]]
(3, 4, 2)

如果参与运算的俩个对象都是ndarray 并且形状相同那么会对位进行加减乘除(+ – * /)运算 add() subtract() multiply() divide()

a=np.arange(1,13).reshape(3,4)
print(a)
b=np.arange(11,23).reshape(3,4)
print(b)
print(np.add(a,b))

print(a+b)

结果
[[ 1 2 3 4]
[ 5 6 7 8]
[ 9 10 11 12]]
[[11 12 13 14]
[15 16 17 18]
[19 20 21 22]]
[[12 14 16 18]
[20 22 24 26]
[28 30 32 34]]
[[12 14 16 18]
[20 22 24 26]
[28 30 32 34]]

subtract() 减法

a=np.arange(1,13).reshape(3,4)
print(a)
b=np.arange(11,23).reshape(3,4)
print(b)
print(np.subtract(b,a))

print(b-a)

结果
[[ 1 2 3 4]
[ 5 6 7 8]
[ 9 10 11 12]]
[[11 12 13 14]
[15 16 17 18]
[19 20 21 22]]
[[10 10 10 10]
[10 10 10 10]
[10 10 10 10]]
[[10 10 10 10]
[10 10 10 10]
[10 10 10 10]]

multiply() 乘法

import numpy as np
a=np.array([1,2,3,4,5])
print(a)
b=np.empty(5)
np.multiply(a,10,out=b)
print(b)

c=np.arange(1,13).reshape(3,4)
print(c)
d=np.empty((3,4))
np.multiply(c,10,out=d)
print(d)
print("还可以用*")
print(d*10)

print("三维数组乘法")
e=np.arange(1,25).reshape(2,3,4)
print(e)
f=np.empty((2,3,4))
np.multiply(e,10,out=f)
print(f)

结果
[1 2 3 4 5]
[10. 20. 30. 40. 50.]
[[ 1 2 3 4]
[ 5 6 7 8]
[ 9 10 11 12]]
[[ 10. 20. 30. 40.]
[ 50. 60. 70. 80.]
[ 90. 100. 110. 120.]]
还可以用*
[[ 100. 200. 300. 400.]
[ 500. 600. 700. 800.]
[ 900. 1000. 1100. 1200.]]
三维数组乘法
[[[ 1 2 3 4]
[ 5 6 7 8]
[ 9 10 11 12]]

[[13 14 15 16]
[17 18 19 20]
[21 22 23 24]]]
[[[ 10. 20. 30. 40.]
[ 50. 60. 70. 80.]
[ 90. 100. 110. 120.]]

[[130. 140. 150. 160.]
[170. 180. 190. 200.]
[210. 220. 230. 240.]]]

数学函数 sin()、cos()、tan()

通过乘以 pi/180 转换成弧度

a=np.array([0,30,45,60,90])
print(a)

print(np.sin(a*np.pi/180))

print(np.cos(a*np.pi/180))

print(np.tan(a*np.pi/180))

结果
[ 0 30 45 60 90]
[0. 0.5 0.70710678 0.8660254 1. ]
[1.00000000e+00 8.66025404e-01 7.07106781e-01 5.00000000e-01
6.12323400e-17]
[0.00000000e+00 5.77350269e-01 1.00000000e+00 1.73205081e+00
1.63312394e+16]

四舍五入 around 向上取整 ceil 向下取整floor


a=np.array([1.23,3.76,9.98])
print(a)
print(np.around(a))

结果
[1.23 3.76 9.98]
[ 1. 4. 10.]


b=np.array([1.23,3.16,9.17])
print(b)
print(np.ceil(b))

结果
[1.23 3.16 9.17]
[ 2. 4. 10.]


c=np.array([1.73,3.86,9.17])
print(c)
print(np.floor(c))

结果
[1.73 3.86 9.17]
[1. 3. 9.]

中位数median() 对数组排序如果是奇数就取中间,偶数取中间俩数和的一半

a=np.arange(1,13)
print(np.median(a))

结果为
6.5


a=np.arange(1,13).reshape(3,4)
print(a)
print("axis=0表示垂直方向",np.median(a,axis=0))
print("axis=0表示水平方向",np.median(a,axis=1))

结果
[[ 1 2 3 4]
[ 5 6 7 8]
[ 9 10 11 12]]
axis=0表示垂直方向 [5. 6. 7. 8.]
axis=0表示水平方向 [ 2.5 6.5 10.5]


a=np.array([12,3,14,9,7])
print(np.mean(a))

结果
9.0


b=np.arange(1,13).reshape(3,4)
print("axis=0表示垂直方向",np.mean(b,axis=0))
print("axis=0表示水平方向",np.mean(b,axis=1))

结果
axis=0表示垂直方向 [5. 6. 7. 8.]
axis=0表示水平方向 [ 2.5 6.5 10.5]


返回最小值下标a=np.array([12,3,14,9,7])
print(np.min(a))

结果
3

Original: https://blog.csdn.net/weixin_49213878/article/details/121215406
Author: 呵呵也不想呵呵
Title: python ——numpy

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/761186/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球