Q1.Numpy_数组、数组查询、转置和轴对换、读写文件

安装地址:

https://www.lfd.uci.edu/~gohlke/pythonlibs/

numpy,matplotlib都是在这里下载

import numpy as np

Part_1:Numpy数组,数组查询及转置和轴对换

1.1 创建各种类型的数组

arr1=np.array([1,2,3,4])
print('一维数组:\n',arr1)

arr2=np.array([[1,2,3],[4,5,6]])
print('二维数组:\n',arr2)

arr3=np.array([[[[1,2,3,4],[5,6,7,8],[9,10,11,12]]]])
print('四维数组:\n',arr3)

arr4=np.array([1,2,3,4],ndmin=3)
print("三维数组:\n",arr4)

arr5=np.array([1,2,3.4],dtype=complex)
print('复数数组:\n',arr5)
一维数组:
 [1 2 3 4]
二维数组:
 [[1 2 3]
 [4 5 6]]
四维数组:
 [[[[ 1  2  3  4]
   [ 5  6  7  8]
   [ 9 10 11 12]]]]
三维数组:
 [[[1 2 3 4]]]
复数数组:
 [1. +0.j 2. +0.j 3.4+0.j]

1.2 数组属性查询

1.2.1 数组维度
print('arr3数组维度:\n',arr3.ndim)
arr3数组维度:
 4
1.2.2 数组形状
print('arr3数组形状:\n',arr3.shape)
arr3数组形状:
 (1, 1, 3, 4)

shape属性的应用 将arr2由原2行3列数组调整为3行2列

arr2=np.array([[1,2,3],[4,5,6]])
print('二维数组:\n',arr2)
arr2.shape=(3,2)
print("arr2变为3行2列后的数组为:\n",arr2)
二维数组:
 [[1 2 3]
 [4 5 6]]
arr2变为3行2列后的数组为:
 [[1 2]
 [3 4]
 [5 6]]
1.2.3 数组元素的总数
print('arr3数组元素的总数:\n',arr3.size)
arr3数组元素的总数:
 12
1.2.4 数组的数据类型
print('arr5元素的数据类型:\n',arr5.dtype)
arr5元素的数据类型:
 complex128
1.2.5 数组中每个元素的大小
arr5=np.array([1,2,3.4],dtype=complex)
print('复数数组:\n',arr5)
print("arr5数组中每个元素的大小:\n",arr5.itemsize)
复数数组:
 [1. +0.j 2. +0.j 3.4+0.j]
arr5数组中每个元素的大小:
 16
1.2.6 数据类型转换
arr7=np.array([1.2,2.6,3.7,9.9])
print(arr7.dtype)
arr6=arr7.astype(np.int32)
print("转换后:\n",arr6.dtype)
float64
转换后:
 int32

1.3 数组展平

数组名.ravel()

arr2=np.array([[1,2,3],[4,5,6]])
print('二维数组arr2:\n',arr2)
arr8=arr2.ravel()
print("展平后:\n",arr8)
二维数组arr2:
 [[1 2 3]
 [4 5 6]]
展平后:
 [1 2 3 4 5 6]

1.4 数组转置和轴对换

transpose(),ndarray.T()函数

arr2=np.array([[1,2,3],[4,5,6]])
print('二维数组arr2:\n',arr2)
#arr3的3行4列转置成2行6列
print("转置成2行6列:\n",np.transpose(arr2))          
二维数组arr2:
 [[1 2 3]
 [4 5 6]]
转置成2行6列:
 [[1 4]
 [2 5]
 [3 6]]
1.4.1 翻转函数示例
arr = np.arange(10).reshape(2,5)
print('原数组:\n',arr)
原数组:
 [[0 1 2 3 4]
 [5 6 7 8 9]]

用transpose函数转置

print('transpose转置数组:\n')
print(np.transpose(arr))
transpose转置数组:

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

用ndarry.T转置

print('ndarry,T转置数组:\n')
print(arr.T)
ndarry,T转置数组:

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

用rollaxis函数

rollaxis()函数:可实现向后滚动特定的轴,直到一个特定的位置:numpy.rollaxis(arr,axis,start)

arr=np.arange(8).reshape(2,2,2)
print('原数组:\n',arr)
原数组:
 [[[0 1]
  [2 3]]

 [[4 5]
  [6 7]]]
#将轴2滚动到轴0(宽度到深度)
print('调用rollaxis函数:')
print(np.rollaxis(arr,2,1))
调用rollaxis函数:
[[[0 2]
  [1 3]]

 [[4 6]
  [5 7]]]

用swapaxes函数

arr=np.arange(8).reshape(2,2,2)
print('原数组:\n',arr)

#现在交换轴0(深度方向)到轴2(宽度方向)
print('调用swapaxes函数后的数组:')
print(np.swapaxes(arr,2,0))
原数组:
 [[[0 1]
  [2 3]]

 [[4 5]
  [6 7]]]
调用swapaxes函数后的数组:
[[[0 4]
  [2 6]]

 [[1 5]
  [3 7]]]

Part_2 : Numpy读写文件

2.1 numpy读文件

#创建一个元素范围为0-11的3行4列的数组,然后设置不同的参数,将该数组写入TXT和CSV文件
import numpy as np
arr = np.arange(12).reshape(3,4)
#fmt默认取%.18e(浮点数),分隔符默认是空格,写入保存在当前目录
np.savetxt('test5-1-1.txt',arr)
#写入的文件是十进制整数
np.savetxt('test5-1-2.txt',arr,fmt='%d',delimiter=',')
#在test5-1-3.txt文件头部和尾部都加#test5-1-3注释,写入的文件是字符串
np.savetxt('test5-1-3.txt',arr,fmt='%s',delimiter=',',header='test5-1-3',footer='test5-1-3')
#在test5-1-4.txt文件头部加##test5-1-4注释
np.savetxt('test5-1-4.txt',arr,fmt='%s',delimiter=',',header='test5-1-4',comments='##')
print("-------------------------------------")
#将arr数组保存为csv文件
np.savetxt('test5-1.csv',arr,fmt='%d',delimiter=',',header='test5-1')
arr_phone = np.array([['id','name','tel','email'],
                [1,'李明',15996663527,'liming@163.com'],
                [2,'王红',17823727539,'wangming@163.com'],
                [3,'张某人',17769265666,'wangbagaozi@163.com']])
print(arr_phone)
#enconding后面跟utf-8,不然会出现中文乱码
np.savetxt('phone.csv',arr_phone,fmt='%s',delimiter=',',encoding='utf-8')
-------------------------------------
[['id' 'name' 'tel' 'email']
 ['1' '李明' '15996663527' 'liming@163.com']
 ['2' '王红' '17823727539' 'wangming@163.com']
 ['3' '张某人' '17769265666' 'wangbagaozi@163.com']]

2.2 numpy 写文件

#从test5-1-1.txt文件中读取数据
arr1=np.loadtxt('test5-1-1.txt')
print(arr1)
print("-------------------------------------")
#从test5-1-2.txt文件中读取数据
arr2=np.loadtxt('test5-1-2.txt',delimiter=',')
print(arr2)
print("-------------------------------------")
#从test5-1-3.txt文件中读取数据
arr3=np.loadtxt('test5-1-3.txt',dtype=np.int32,delimiter=',')
print(arr3)
print("-------------------------------------")
#从test5-1-4.txt文件中读取数据
arr4=np.loadtxt('test5-1-4.txt',delimiter=',')
print(arr4)
print("-------------------------------------")
#从csv文件中读取数据
arr5=np.loadtxt('test5-1.csv',delimiter=',')
arr6=np.loadtxt('phone.csv',dtype=np.str_,delimiter=',',encoding='utf-8')
print(arr5)
print(arr6)
[[ 0.  1.  2.  3.]
 [ 4.  5.  6.  7.]
 [ 8.  9. 10. 11.]]
-------------------------------------
[[ 0.  1.  2.  3.]
 [ 4.  5.  6.  7.]
 [ 8.  9. 10. 11.]]
-------------------------------------
[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]
-------------------------------------
[[ 0.  1.  2.  3.]
 [ 4.  5.  6.  7.]
 [ 8.  9. 10. 11.]]
-------------------------------------
[[ 0.  1.  2.  3.]
 [ 4.  5.  6.  7.]
 [ 8.  9. 10. 11.]]
[['id' 'name' 'tel' 'email']
 ['1' '李明' '15996663527' 'liming@163.com']
 ['2' '王红' '17823727539' 'wangming@163.com']
 ['3' '张某人' '17769265666' 'wangbagaozi@163.com']]

2.3 numpy读写二进制格式文件

1.使用save()或savez()函数写二进制格式文件

格式:numpy.save(file,array)或numpy.savez(file,array)

file:文件名,以.npy为拓展名,压缩拓展名为.npz

array:数组变量

2.使用load()函数读取二进制文件

numpy.load(file) file:文件名,以.npy为拓展名,压缩拓展名为.npz

#示例:
#load和save函数
import numpy as np
arr1=np.arange(30).reshape(3,5,2)
print(arr1)
np.save('arr1.npy',arr1)
arr_a=np.load('arr1.npy')
print(arr_a)
#load和savez函数
arr2=np.arange(20).reshape(4,5)
np.savez('arr2.npz',arr1,arr2)
arr_b=np.load('arr2.npz')
print(arr_b)
[[[ 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]]]
[[[ 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]]]
<numpy.lib.npyio.NpzFile object at 0x0000022ABCDF4400>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TryBest_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值