您的位置:首页 > 编程语言 > Python开发

1.Python数据分析与应用——NumPy数值计算基础

2020-02-02 14:29 1306 查看

1、创建数组对象

#numpy 基础
import numpy as np
x=np.array([1,2,3,4])
print(x)
#列表相加
y=[1,2,3,4]+[-1,-2,-3,-4]
print(y)
#数组相加
a=np.array([1,2,3,4])
b=np.array([-1,-2,-3,-4])
z=a+b
print(z)

[1 2 3 4]
[1, 2, 3, 4, -1, -2, -3, -4]
[0 0 0 0]

#新建array
x1=np.array([1,2,3,4])
x2=np.array([[1,2,3,4],[5,6,7,8]])
x3=np.array([[[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(x1)
print(x2)
print(x3)
#查看数组结构
print('x1:',x1.shape,'  x2:',x2.shape,'  x3:',x3.shape)
#查看数组类型
print('x1:',x1.dtype,'  x2:',x2.dtype,'  x3:',x3.dtype)
#查看数组元素个数
print('x1:',x1.size,'  x2:',x2.size,'  x3:',x3.size)
#查看数组每个元素大小
print('x1:',x1.itemsize,'  x2:',x2.itemsize,'  x3:',x3.itemsize)

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

[[ 1 2 3 4]
[ 5 6 7 8]
[ 9 10 11 12]]]
x1: (4,) x2: (2, 4) x3: (2, 3, 4)
x1: int32 x2: int32 x3: int32
x1: 4 x2: 8 x3: 24
x1: 4 x2: 4 x3: 4

#重新设置数组的reshape属性
x=np.array([[1,2,3,4],[5,6,7,8]])
y=x.reshape(4,2)
print(y)

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

#使用arange函数创建数组
x=np.arange(0,1,0.1)
print(x)

[0. 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9]

#linspace函数和logspace函数
#等差数列
x=np.linspace(1,100,10)
print(x)
#等比数列
y=np.logspace(0,2,20)
print(y)
'''构造5到155的10个数的等比数列'''
import math
i=math.log(5,10)
j=math.log(155,10)
z=np.logspace(i,j,10)
print(z)

[ 1. 12. 23. 34. 45. 56. 67. 78. 89. 100.]
[ 1. 1.27427499 1.62377674 2.06913808 2.6366509
3.35981829 4.2813324 5.45559478 6.95192796 8.8586679
11.28837892 14.38449888 18.32980711 23.35721469 29.76351442
37.92690191 48.32930239 61.58482111 78.47599704 100. ]
[ 5. 7.32279471 10.72466448 15.70690326 23.00368563
33.69025349 49.34136202 72.26333296 105.83391049 155. ]

#使用zeros函数/eye函数/diag函数/ones函数创建数组
x=np.zeros((2,3))
print(x)
y=np.eye(3)#对角线全为1
print(y)
z=np.diag([1,2,3,4])#对角线
print(z)
t=np.ones((4,3))#全为1
print(t)

[[0. 0. 0.]
[0. 0. 0.]]
[[1. 0. 0.]
[0. 1. 0.]
[0. 0. 1.]]
[[1 0 0 0]
[0 2 0 0]
[0 0 3 0]
[0 0 0 4]]
[[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]]

2、生成随机数

#随机数
import random
import numpy as np
x=random.randint(1,10)#上下界中随机一个数
print(x)
y=random.choice([1,22,333,4444])#数组中随机一个数
print(y)
z=np.random.random(10)#生成对应个数的随机数
print(z)
t=np.random.randint(2,10,size=[2,5])
print(t)

8
22
[0.38327183 0.46412497 0.33244229 0.34117501 0.36646363 0.44531858
0.8557724 0.2786145 0.55788182 0.81091057]
[[6 8 3 3 9]
[6 9 9 5 2]]

3、通过索引访问数组

#通过索引访问一维数组
t=np.random.randint(2,100,size=(4,5))
print(t)
#求和
s=0
for i in t:
for j in i:
s+=j
print(s)

[[74 50 73 37 89]
[64 92 85 88 60]
[61 56 86 22 96]
[59 61 62 58 75]]
1348

#切片访问
x=np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]])
print(x)
print(x[0:2,2:])
print(x[::-1,::-1])
x.ravel()#数组展平

[[ 1 2 3 4]
[ 5 6 7 8]
[ 9 10 11 12]]
[[3 4]
[7 8]]
[[12 11 10 9]
[ 8 7 6 5]
[ 4 3 2 1]]
array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])

4.创建NumPy矩阵

#矩阵
x=np.matrix([[1,2,3],[4,5,6],[7,8,9]])
y=np.matrix(np.ones((3,3)))
print(x)
print(y)
print(x.T)#转置
print(x.I)#逆矩阵
t=np.multiply(x,x)
print(t)#矩阵对应元素相乘

[[1 2 3]
[4 5 6]
[7 8 9]]
[[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]]
[[1 4 7]
[2 5 8]
[3 6 9]]
[[ 3.15251974e+15 -6.30503948e+15 3.15251974e+15]
[-6.30503948e+15 1.26100790e+16 -6.30503948e+15]
[ 3.15251974e+15 -6.30503948e+15 3.15251974e+15]]
[[ 1 4 9]
[16 25 36]
[49 64 81]]

5、读/写文件

#单数组的文件保存和读取
x1=np.random.randint(1,100,(5,20))
np.save("d:/test",x1)
x=np.load("d:/test.npy")
#多数组的文件保存和读取
x1=np.random.randint(1,100,(5,20))
x2=np.random.randint(1,100,(5,20))
x3=np.random.randint(1,100,(5,20))
np.savez("d:/Test",x1,x2,x3)
X=np.load("d:/test.npz")
  • 点赞
  • 收藏
  • 分享
  • 文章举报
可一z可再 发布了18 篇原创文章 · 获赞 1 · 访问量 234 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: