第一次学习numpy笔记(1)

第一次学习numpy笔记(1)

第一次写博客,记录numpy做的一些小笔记,要注意的点都在注释块里面,后续会继续更新,如果有错误希望各位大佬指出,谢谢。
第一天成果:ndarray数组的属性,创建方法,改变数组维度以及类型函数

import numpy as np
#轴(axis)表示维度,秩(rank)表示轴的数量
a = np.array([[0,1,2,3,4],
              [9,8,7,6,5]])
print("{0}\n".format(a))

#ndarry属性
x1 = a.ndim
x2 = a.shape
x3 = a.size
x4 = a.dtype
x5 = a.itemsize
print("{0}\n".format(x1))          #维度()秩
print("{0}\n".format(x2))         #尺度,几行几列
print("{0}\n".format(x3))          #元素个数
print("{0}\n".format(x4))         #元素类型
print("{0}\n".format(x5))          #每个元素大小
print('.....')

#ndarry数组的创建
x = np.array([0, 1, 2, 3])#list
print("{0}\n".format(x))
x = np.array((4, 5, 6, 7))#tuple
print("{0}\n".format(x))
x = np.array([[0, 1], [9, 8], (0.1, 0.2)])#list+tuple
print("{0}\n".format(x))
print('.....')

#此方法创建的数组中的元素为整数类型
print("{0}\n".format(np.arange(10)))
#以下3个创建ndarry数组的方法创建出来的数组中的元素为浮点数类型,若不规定dtype = np.int32元素不会为整数类型
print("{0}\n".format(np.ones((3, 6))))
print("{0}\n".format(np.zeros((3, 6))))
print("{0}\n".format(np.eye(5)))
print('.....')

#依据数组a的尺度填充新创建的数组,不改变原数组
a = np.array([[0,1,2,3,4],
              [9,8,7,6,5]])
print("{0}\n".format(np.ones_like(a)))
print("{0}\n".format(np.zeros_like(a)))
#3可以用别的数字代替
print("{0}\n".format(np.full_like(a, 3)))
print("{0}\n".format(np.full((2, 3, 4), 25, dtype = np.int)))
print('.....')


#以下方法创建的数组元素皆为浮点数
#创建一个有4个元素的数组,其中元素的范围是[1,10]
b = np.linspace(1, 10, 4)
#创建一个有4个元素的数组,其中元素的范围是[1,10)
c = np.linspace(1, 10, 4, endpoint= False)
print("{0}\n".format(b))
print("{0}\n".format(c))
#np.concatenate((b,c))合并b,c数组成为一个新数组
#记住里面的参数样子是(b, c)不是b, c
d = np.concatenate((b, c))
print("{0}\n".format(d))
print('.....')

#维度变化
a = np.ones((2, 3, 4))
#不改变原数组
print("{0}\n".format(a.reshape((3, 8))))
print("{0}\n".format(a))
#改变原数组
print("{0}\n".format(a.resize(3, 8)))
print("{0}\n".format(a))
#降维打击
print("{0}\n".format(a.flatten()))
print('.....')

#改变数组类型
#不改变原数组
print("{0}\n".format(a.astype(np.int)))
print("{0}\n".format(a))
#将ndarry变为列表
a = np.full((2, 3, 4), 25, dtype = np.int32)
print("{0}\n".format(a))
print("{0}\n".format(a.tolist()))

第二天成果:ndarray数组切片索引操作以及各种运算函数

#索引切片(终止编号都不包括在内)
import numpy as np
a = np.array([9, 8, 7, 6, 5])
print("{0}\n".format(a[2]))
#从第二个元素开始,到第五个结束(不含第五个),步长为2
print("{0}\n".format(a[1:4:2]))
print('.....')

#多维
a = np.arange(24).reshape((2, 3, 4))
print("{0}\n".format(a))
print("{0}\n{1}\n{2}\n".format(a[1, 2, 3],a[0, 1, 2],a[-1, -2, -3]))
print("{0}\n".format(a[:, 1, -3]))
print("{0}\n".format(a[:, 1:3, :]))
print("{0}\n".format(a[:, :, ::2]))
print('.....')

#数组运算
a = np.arange(24).reshape(2, 3, 4)
#a.mean()求平均值
print("{0}\n".format(a.mean()))
a = a / a.mean()
print("{0}\n".format(a))

a = np.array([1.2, 2.4, 3.5])
print(np.ceil(a))
print(np.floor(a))
print('.....')

#ndarray数组运算函数列表(其中x为ndarray数组)均不改变原数组
# np.abs(x)    计算各元素绝对值                           np.fabs(x)      计算各元素绝对值
# np.sqrt(x)   计算各元素平方根                           np.square(x)    计算各元素平方
# np.log(x)    计算各元素自然对数                         np.log10(x)     计算各元素10底对数            np.log2(x)   计算各元素2第对数
# np.ceil(x)   计算各元素ceiling值(大于这个元素的最小整数值)  np.floor(x)     计算各元素floor值(小于这个元素的最大整数值)
# np.rint(x)   各元素四舍五入                             np.modf(x)      将小数和整数部分以2个独立的数组返回
#计算对应的三角函数:np.cos(x)       np.sin(x)      np.tan(x)   np.cosh(x)   np.sinh(x)   np.tanh(x)
# np.exp(x)     计算各元素的指数值                         np.sign(x)      计算各元素的符号(+返回1,-返回-1,0)
# +、 ‐、 * 、/ 、** 两个数组各元素进行对应运算
# np.maximum(x,y) 、np.fmax()、 np.minimum(x,y) 、np.fmin() :元素级的最大值/最小值计算
# np.mod(x,y) :元素级的模运算
# np.copysign(x,y) : 将数组y中各元素值的符号赋值给数组x对应元素
# > < >= <= == != 算术比较,产生布尔型数组

第三天成果:ndarray数组在文件中的存取

import numpy as np
#csv只能存储一维二维数据
a = np.arange(100).reshape(5, 20)
#np.savetxt(frame, array, fmt='%.18e',delimiter=None)
# 其中frame为创建的文件名字,array指的是数组,fmt(科学计数法)和delimiter(空格)有默认值可以不需要
np.savetxt('a.csv', a, '%.1f', ',')
b = np.array([['北京', '天津', '湖南'],
             [1, 2, 3]])
np.savetxt('b.csv', b, '%s', ',')

#np.loadtxt(frame, dtype=np.float,delimiter=None,unpack=False)
#frame指的是读取的文件名字,dtype(浮点数)和delimiter(空格)有默认值,unpack可以改为True但是这样读入的属性写入不同变量
#对比b和c的差别
b = np.loadtxt('a.csv', dtype=np.int, delimiter=',')
print("{0}\n".format(b))
c = np.loadtxt('a.csv', np.int, ',')
print("{0}\n".format(c))
print('.....')

#任意维度存储
#a.tofile(frame, sep='',format='%s')
#frame表示创建的文件名字,sep表示数据分割字符串若为空串写入的文件为二进制,format表示格式
a = np.arange(100).reshape(2, 5, 10)
a.tofile('b.dat', sep=',', format='%d')
print('.....')

# np.fromfile(frame, dtype=float, count=-1, sep='')
#frame表示读取的文件名,dtype代表读取数据类型,count=-1代表读入整个文件,sep代表数据分割字符串若为空串代表写入的文件为二进制
c = np.fromfile('b.dat', dtype=np.int, sep=',')
print("{0}\n".format(c))
#对比c数组前后发现np.fromfile使用之后会丢失维度数据
c = c.reshape(2, 5, 10)
print("{0}\n".format(c))
print('.....')
#如果对储存格式没要求那么就可以使用np.save(frame, array)或者np.savez(frame, array)(压缩文件)以numpy自定义格式存储到文件中
#然后用np.load(frame)进行读取,其中不会丢失维度等数据

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值