[复习]numpy的常见基本操作(二)

学习环境:jupyter

import numpy as np
  • 1.数组的加减乘除
arr1 = np.array([2,4,6,8])
arr2 = np.array([1,2,3,4])
arr3 = arr1 + arr2
arr4 = arr1 - arr2
arr5 = arr1 * arr2
arr6 = arr1 / arr2
print(arr3)
print(arr4)
print(arr5)
print(arr6)
[ 3  6  9 12]
[1 2 3 4]
[ 2  8 18 32]
[2. 2. 2. 2.]
  • 2.数组的比较
# 比较后得到的是布尔值数组
arr1 > arr2
[ True,  True,  True,  True]
  • 3.数组的切片和索引
# 前开后闭
arr1d = np.array([1,2,3,4,5,6,7,8,9])
print(arr1d[1:-4])
[2 3 4 5]

arr2d = np.array([[1,2,3],[4,5,6],[7,8,9]])
# 取第二组第2个数
print(arr2d[1][1])
# 取第一组1~3个数
print(arr2d[0][0:3])
5

[1,2,3]

# 二维数组的切片 数组名[行索引或切片 , 列索引或切片]
print(arr2d[0:2,1:2])
print(arr2d[:2,:2])
[[2]
 [5]]
 
[[1 2]
 [4 5]]
  • 4.布尔索引
# 索引2468
print(arr2d[arr2d%2==0])
# 索引13579
print(arr2d[arr2d%2==1])
[2,4,6,8]
[1, 3, 5, 7, 9]
  • 5.数组的其他属性
arr_4d = np.ones((3,3,3,3),dtype='int64')
# 数组的维度
print(arr_4d.ndim)
# 数组的形状
print(arr_4d.shape)
# 数组的元素个数
print(arr_4d.size)
# 数组的数据类型
print(arr_4d.dtype)
# 数组的转置(行变列,列变行)
print(arr_4d.T)
4
(3, 3, 3, 3)
81
int64
  • 6.修改数据类型

numpy.dtype(object, align, copy)

  • object - 要转换为的数据类型对象
  • align - 如果为 true,填充字段使其类似 C 的结构体。
  • copy - 复制 dtype 对象 ,如果为 false,则是对内置数据类型对象的引用
# dtype属性查看当前数组的数据类型
# astype方法修改数据类型
float_arr1 = np.array([1.0,2.0,3.0,4.0])
print(float_arr1.dtype)
int64_arr1 = float_arr1.astype(np.int64)
print(int64_arr1)
float64
[1 2 3 4]
  • 7.处理数组的形状
list1=[1,2,3,4,5,6]
list2=[7,8,9,10,11,12]
arr=np.array([list1,list2])
print(arr)
[[ 1  2  3  4  5  6]
 [ 7  8  9 10 11 12]]

numpy.reshape 函数可以在不改变数据的条件下修改形状,格式如下: numpy.reshape(arr, newshape, order=‘C’)

  • arr:要修改形状的数组
  • newshape:整数或者整数数组,新的形状应当兼容原有形状
  • order:‘C’ – 按行,‘F’ – 按列,‘A’ – 原顺序,‘k’ – 元素在内存中的出现顺序。
# 改变行列(输入不符合数组大小的值会报错)
arr_1 = arr.reshape(3,4)
print(arr_1)
[[ 1  2  3  4]
 [ 5  6  7  8]
 [ 9 10 11 12]]

# 可以改变数组维度
arr_2 = np.array([1,2,3,4,5,6,7,8])
arr_2 = arr_2.reshape((2,2,2))
print(arr)
[[[1 2]
  [3 4]]

 [[5 6]
  [7 8]]]

# 输入负数会自动计算(不管是什么负数)
arr_3 = arr.reshape(2,-100)
print(arr_3)

numpy.ndarray.flatten 返回一份数组拷贝,对拷贝所做的修改不会影响原始数组,
重新分配内存,生成一个新的数组,修改flatten后的数组不会影响原数组
numpy.ndarray.flatten(order=‘C’)

arr_4 = arr.flatten()
print(arr_4)
[ 1  2  3  4  5  6  7  8  9 10 11 12]

numpy.ravel
numpy.ravel() 展平的数组元素,顺序通常是"C风格",返回的是数组视图(view,有点类似 C/C++引用reference的意味),修改会影响原始数组。
numpy.ravel(a, order=‘C’)

  • 8.连接和分割数组
arr1 = np.array([1,2,3,4,9,10,11,12]).reshape(2,4)
print(arr1)
arr2 =np.array([5,6,7,8,13,14,15,16]).reshape(2,4)
print(arr2)
[[ 1  2  3  4]
 [ 9 10 11 12]]
 
[[ 5  6  7  8]
 [13 14 15 16]]

# axis=1/0,横向连接/竖直连接
arr3=np.concatenate([arr1,arr2],axis=1)  
print(arr3)
[[ 1  2  3  4  5  6  7  8]
 [ 9 10 11 12 13 14 15 16]]

平分数组

# 纵向切割
# 分成4等分 4个数组接受 
arr4,arr5,arr6,arr7=np.split(arr3,4,axis=1)
print(arr4)
print(arr5)
[[ 1]
 [ 9]
 [ 5]
 [13]] 
 
 [[ 2]
 [10]
 [ 6]
 [14]]
#横向切割
arr8,arr9 = np.split(arr3,2,axis=0)
print(arr8)
[[ 1  2  3  4]
 [ 9 10 11 12]] 

# 不规则切割 3,6代表切割点
np.split(arr3,[3,6],axis=1)
[array([[ 1,  2,  3], [ 9, 10, 11]]),
 array([[ 4,  5,  6], [12, 13, 14]]),
 array([[ 7,  8], [15, 16]])]

附图:NumPy 数据类型
在这里插入图片描述


详细可以查看菜鸟驿站:https://www.runoob.com/numpy/numpy-tutorial.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值