import numpy as np#导入numpy库并配置一个别名np
#传统的python语法
def pysum():
a=[0,1,2,3,4]
b=[9,8,7,6,5]
c=[]
for i in range(len(a)):
c.append(a[i]**2+b[i]**2)
return c
print(pysum())
#运用numpy的思想 对数组的运算是对数组中的每一个元素的运算
def npsum():
a=np.array([0,1,2,3,4])
b=np.array([9,8,7,6,5])
c=a**2+b**2
return c
print(pysum())
numpy中ndarray数组的属性
变量.ndim |
数组的行数 |
变量.shape |
数组的维度和形状,即行数和列数构成的元组 |
变量.size |
数组中元素的总个数 |
变量.dtype |
数组中元素的数据类型 |
变量.itemsize |
元素的字节大小 |
|
|
#np.array()函数创建数组对象
a=[4,56,567,4]
b=[23,54,6,78]
n=np.array([a,b])
print(n)
[[ 4 56 567 4]
[ 23 54 6 78]] |
#np.arange()函数创建数组 只能创建一维数组
ui=np.array([np.arange(9),np.arange(9,18)])
print(ui)
结果: [[ 0 1 2 3 4 5 6 7 8]
[ 9 10 11 12 13 14 15 16 17]] |
#np.ones() np.zeros() np.full(shape,val) np.eye()
u2=np.ones((2,3,4))
print(u2)
print('------分割线------')
u3=np.zeros((3,3,3))
print(u3)
结果: [[[1. 1. 1. 1.]
[1. 1. 1. 1.]
[1. 1. 1. 1.]]
[[1. 1. 1. 1.]
[1. 1. 1. 1.]
[1. 1. 1. 1.]]]
------分割线------
[[[0. 0. 0.]
[0. 0. 0.]
[0. 0. 0.]]
[[0. 0. 0.]
[0. 0. 0.]
[0. 0. 0.]]
[[0. 0. 0.]
[0. 0. 0.]
[0. 0. 0.]]] |
u4=np.full((3,4),26)
print(u4)
print('------分割线------')
u5=np.eye(4)
print(u5)
print('------分割线------')
u6=np.concatenate([u4,u5])#将两个或者多个数组合并为一个新的数组
print(u6)
结果:
[[26 26 26 26]
[26 26 26 26]
[26 26 26 26]]
------分割线------
[[1. 0. 0. 0.]
[0. 1. 0. 0.]
[0. 0. 1. 0.]
[0. 0. 0. 1.]]
------分割线------
[[26. 26. 26. 26.]
[26. 26. 26. 26.]
[26. 26. 26. 26.]
[ 1. 0. 0. 0.]
[ 0. 1. 0. 0.]
[ 0. 0. 1. 0.]
[ 0. 0. 0. 1.]] |
#ndarray数组的维度变换
u8=u6.reshape((2,14))
print(u8)
print('------分割线------')
print(u6)
print('------分割线------')
u9=u8.flatten()#对数组进行降维返回一维数组(不改变原数组)
print(u9)
print('------分割线------')
print(u8)
[[26. 26. 26. 26. 26. 26. 26. 26. 26. 26. 26. 26. 1. 0.]
[ 0. 0. 0. 1. 0. 0. 0. 0. 1. 0. 0. 0. 0. 1.]]
------分割线------
[[26. 26. 26. 26.]
[26. 26. 26. 26.]
[26. 26. 26. 26.]
[ 1. 0. 0. 0.]
[ 0. 1. 0. 0.]
[ 0. 0. 1. 0.]
[ 0. 0. 0. 1.]]
------分割线------
[26. 26. 26. 26. 26. 26. 26. 26. 26. 26. 26. 26. 1. 0. 0. 0. 0. 1.
0. 0. 0. 0. 1. 0. 0. 0. 0. 1.]
------分割线------
[[26. 26. 26. 26. 26. 26. 26. 26. 26. 26. 26. 26. 1. 0.]
[ 0. 0. 0. 1. 0. 0. 0. 0. 1. 0. 0. 0. 0. 1.]] |
#数组的拷贝和转换 new_a=a1.astype() new_2=a.tolist()
a1=np.array([np.arange(9),np.arange(51,60)])
print(a1)
a2=a1.tolist()
print(type(a2))
print(a2)
[[ 0 1 2 3 4 5 6 7 8]
[51 52 53 54 55 56 57 58 59]]
[[0, 1, 2, 3, 4, 5, 6, 7, 8], [51, 52, 53, 54, 55, 56, 57, 58, 59]] |
#numpy数组的属性 n.ndim n.shape n.size n.dtype n.itemsize
print(n.ndim)
print(n.shape)
print(n.size)
print(n.dtype)
#数组的操作 即 ;索引和切片
#一维数组的索引与切片
a3=np.array([9,8,7,6,5])
print(a3[2])#索引
print(a3[1:4:2])#切片
print((a3[1:4:2]).tolist())
#多维数组的索引与切片
a4=np.arange(24).reshape((2,3,4))
print(a4)
print('------分割线------')
print(a4[0,1,2])#索引
print(a4[1,2,3])
print(a4[1,1,1])
print('------分割线------')
print(a4[0,1,:3])#切片
print(a4[:,1,1:3])
[[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
[[12 13 14 15]
[16 17 18 19]
[20 21 22 23]]]
------分割线------
6
23
17
------分割线------
[4 5 6]
[[ 5 6]
[17 18]] |
#数组的运算 一元函数
n=np.arange(24).reshape((2,3,4))
print(n)
print('------分割线------')
print(n*2)
print('------分割线------')
print(np.square(n))#计算数组各元素的平方值
print('------分割线------')
print(np.mean(n))#计算数组各元素的平均值
print('------分割线------')
print(np.abs(n))
[[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
[[12 13 14 15]
[16 17 18 19]
[20 21 22 23]]]
------分割线------
[[[ 0 2 4 6]
[ 8 10 12 14]
[16 18 20 22]]
[[24 26 28 30]
[32 34 36 38]
[40 42 44 46]]]
------分割线------
[[[ 0 1 4 9]
[ 16 25 36 49]
[ 64 81 100 121]]
[[144 169 196 225]
[256 289 324 361]
[400 441 484 529]]]
------分割线------
11.5
------分割线------
[[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
[[12 13 14 15]
[16 17 18 19]
[20 21 22 23]]] |
#数组的运算二元函数
ji=np.arange(12).reshape(2,2,3)
ji2=np.sqrt(ji)
print(ji)
print(ji2)
print('------分割线------')
print(ji
[[[ 0 1 2]
[ 3 4 5]]
[[ 6 7 8]
[ 9 10 11]]]
[[[0. 1. 1.41421356]
[1.73205081 2. 2.23606798]]
[[2.44948974 2.64575131 2.82842712]
[3. 3.16227766 3.31662479]]]
------分割线------
[[[False False False]
[False False False]]
[[False False False]
[False False False]]] |
#csv文件的存储
a9=np.arange(24).reshape(4,6)
np.savetxt("C:\\Users\86666\Desktop\python文件处理\9.csv",a9,fmt='%d',delimiter=',')
print('写入成功')
#csv文件的读取
wenjian=np.loadtxt('C:\\Users\86666\Desktop\python文件处理\9.csv',dtype=np.int32,delimiter=',')
print(wenjian)
结果: 写入成功 [[ 0 1 2 3 4 5]
[ 6 7 8 9 10 11]
[12 13 14 15 16 17]
[18 19 20 21 22 23]] |
#多维数组的储存
hu=np.arange(36).reshape(2,3,6)
hu.tofile('C:\\Users\86666\Desktop\python文件处理\qw.dat',sep=',',format='%d')
print('写入成功')
#多维数组的读取
shu=np.fromfile('C:\\Users\86666\Desktop\python文件处理\qw.dat',dtype=int,sep=',').reshape(hu.shape)
print(shu)
结果: 写入成功 [[[ 0 1 2 3 4 5]
[ 6 7 8 9 10 11]
[12 13 14 15 16 17]]
[[18 19 20 21 22 23]
[24 25 26 27 28 29]
[30 31 32 33 34 35]]] |
#numpy数组便捷的读取方法
u=np.arange(12).reshape(2,6)
print(u)
#保存 np.save()
np.save('C:\\Users\86666\Desktop\python文件处理\wenjian.npy',u)
print('保存成功')
[[ 0 1 2 3 4 5]
[ 6 7 8 9 10 11]]
保存成功 |
#读取
ji3=np.load('C:\\Users\86666\Desktop\python文件处理\wenjian.npy')
print(ji3)
[[ 0 1 2 3 4 5]
[ 6 7 8 9 10 11]] |