多维数组的索引和变换数组的形态

多维数组的索引

import numpy as np

arr = np.array([[1, 2, 3, 4, 5],
                [4, 5, 6, 7, 8],
                [7, 8, 9, 10, 11]])
print(arr)
"""
[[ 1  2  3  4  5]
 [ 4  5  6  7  8]
 [ 7  8  9 10 11]]
"""
#返回索引第0行第[3,5]列的元素
print(arr[0, 3:5])
# [4 5]
#返回索引[1:]行第[2:]列的元素
print(arr[1:, 2:])
"""
[[ 6  7  8]
 [ 9 10 11]]
"""
#返回索引行对应列的元素
print(arr[(0, 1, 2), (1, 2, 3)])
# [ 2  6 10]
#返回索引[1:]行第0,2,3列的元素
print(arr[1:, (0, 2, 3)])
"""
[[ 4  6  7]
 [ 7  9 10]]
"""

mask = np.array([1,0,1],dtype=np.bool)
#返回第0,2行对应的第二列元素
print(arr[mask,2])
"""
[3 9]
"""

注意:只有行数有:时返回的是多行元素

变换数组的形态


arr = np.arange(12)  # 创建一维数组[0,12)
print(arr)
# [ 0  1  2  3  4  5  6  7  8  9 10 11]
# (1)改变数组的形状
# reshape()
print(arr.reshape(3,4))
"""
[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]
"""
# ravel 和 flatten区别(先答共同点后答不同点)
# 都能够实现将多维数组降为一维数组
# 区别在于返回的是拷贝(copy)还是返回的是视图(View)
# numpy.flatten()返回的是拷贝,对于拷贝所做的修改不会影响到原始数据。
# numpy.ravel()返回的是视图,会影响到原始数据
arr1 = np.arange(12).reshape(3, 4)
print(arr1)
"""
[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]
"""
arr2 = arr1.ravel()
arr2[0] = 100
print(arr2)
"""
[100   1   2   3   4   5   6   7   8   9  10  11]
"""
print(arr1)
"""
[[100   1   2   3]
 [  4   5   6   7]
 [  8   9  10  11]]
"""



arr1 = np.arange(12).reshape(3, 4)
print(arr1)
"""
[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]
"""
arr2 = arr1.flatten()
arr2[0] = 100
print(arr2)
"""
[100   1   2   3   4   5   6   7   8   9  10  11]
"""
print(arr1)
"""
[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]
"""

纵向平展和横向平展

arr1 = np.arange(12).reshape(3, 4)
print(arr1)
"""
[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]
"""
arr2 = arr1.flatten('F')
print(arr2)
# [ 0  4  8  1  5  9  2  6 10  3  7 11]
arr3 = arr1.flatten()
print(arr3)
# [ 0  1  2  3  4  5  6  7  8  9 10 11]

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值