首页 > 其他分享 >NumPy学习挑战第十二关-数组操作

NumPy学习挑战第十二关-数组操作

时间:2023-08-26 10:04:38浏览次数:43  
标签:第十二 arr numpy np 数组 reshape print NumPy

Numpy 数组操作

Numpy 中包含了一些函数用于处理数组,大概可分为以下几类:

1、修改数组形状

函数	      描述
reshape	不改变数据的条件下修改形状
flat	数组元素迭代器
flatten	返回一份数组拷贝,对拷贝所做的修改不会影响原始数组
ravel	返回展开数组
(1)numpy.reshape

numpy.reshape 函数可以在不改变数据的条件下修改形状,格式如下:

numpy.reshape(arr, newshape, order='C')

arr:要修改形状的数组 newshape:整数或者整数数组,新的形状应当兼容原有形状 order:'C' -- 按行,'F' -- 按列,'A' -- 原顺序,'k' -- 元素在内存中的出现顺序。

import numpy as np

arr=np.arange(8)
print(arr)
print('\n')
arr1=arr.reshape(2,4)
print(arr1)

[0 1 2 3 4 5 6 7]


[[0 1 2 3]
 [4 5 6 7]]
(2)numpy.ndarray.flat

numpy.ndarray.flat 是一个数组元素迭代器,实例如下:

import numpy as np

arr=np.arange(8).reshape(2,4)
for i in arr.flat:
    print(i,end=' ')

0 1 2 3 4 5 6 7
(3)numpy.ndarray.flatten

numpy.ndarray.flatten 返回一份数组拷贝,对拷贝所做的修改不会影响原始数组,格式如下:

import numpy as np

arr=np.arange(8).reshape(2,4)
print(arr)
print('\n')
print(arr.flatten())
print('\n')
print(arr.flatten(order='F'))#F风格,列优先

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


[0 1 2 3 4 5 6 7]


[0 4 1 5 2 6 3 7]
(4)numpy.ravel

numpy.ravel() 展平的数组元素,顺序通常是"C风格",返回的是数组视图(view,有点类似 C/C++引用reference的意味),修改会影响原始数组。 该函数接收两个参数:

numpy.ravel(a, order='C')
import numpy as np

arr=np.arange(8).reshape(2,4)
print(arr)
print('\n')
print(arr.ravel())
print('\n')
print(arr.ravel(order='F'))#F风格,列优先

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


[0 1 2 3 4 5 6 7]


[0 4 1 5 2 6 3 7]

2、翻转数组

函数			描述
transpose	对换数组的维度
ndarray.T	和 self.transpose() 相同
rollaxis	向后滚动指定的轴
swapaxes	对换数组的两个轴
(1)numpy.transpose

numpy.transpose 函数用于对换数组的维度,格式如下:

import numpy as np

arr=np.arange(8).reshape(2,4)
print(arr)
print('\n')
print(np.transpose(arr))


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


[[0 4]
 [1 5]
 [2 6]
 [3 7]]
(2)numpy.ndarray.T

类似于numpy.transpose,用于数组转置

(3)numpy.rollaxis

numpy.rollaxis 函数向后滚动特定的轴到一个特定位置,格式如下:

numpy.rollaxis(arr, axis, start)
arr:数组
axis:要向后滚动的轴,其它轴的相对位置不会改变
start:默认为零,表示完整的滚动。会滚动到特定位置。
import numpy as np
 
# 创建了三维的 ndarray
a = np.arange(8).reshape(2,2,2)
 
print ('原数组:')
print (a)
print ('获取数组中一个值:')
print(np.where(a==6))   
print(a[1,1,0])  # 为 6
print ('\n')
 
 
# 将轴 2 滚动到轴 0(宽度到深度)
 
print ('调用 rollaxis 函数:')
b = np.rollaxis(a,2,0)
print (b)
# 查看元素 a[1,1,0],即 6 的坐标,变成 [0, 1, 1]
# 最后一个 0 移动到最前面
print(np.where(b==6))   
print ('\n')
 
# 将轴 2 滚动到轴 1:(宽度到高度)
 
print ('调用 rollaxis 函数:')
c = np.rollaxis(a,2,1)
print (c)
# 查看元素 a[1,1,0],即 6 的坐标,变成 [1, 0, 1]
# 最后的 0 和 它前面的 1 对换位置
print(np.where(c==6))   
print ('\n')
原数组:
[[[0 1]
  [2 3]]

 [[4 5]
  [6 7]]]
获取数组中一个值:
(array([1]), array([1]), array([0]))
6


调用 rollaxis 函数:
[[[0 2]
  [4 6]]

 [[1 3]
  [5 7]]]
(array([0]), array([1]), array([1]))


调用 rollaxis 函数:
[[[0 2]
  [1 3]]

 [[4 6]
  [5 7]]]
(array([1]), array([0]), array([1]))
(4)numpy.swapaxes

numpy.swapaxes 函数用于交换数组的两个轴,格式如下:

numpy.swapaxes(arr, axis1, axis2)
arr:输入的数组
axis1:对应第一个轴的整数
axis2:对应第二个轴的整数
import numpy as np
 
# 创建了三维的 ndarray
a = np.arange(8).reshape(2,2,2)
 
print ('原数组:')
print (a)
print ('\n')
# 现在交换轴 0(深度方向)到轴 2(宽度方向)
 
print ('调用 swapaxes 函数后的数组:')
print (np.swapaxes(a, 2, 0))
原数组:
[[[0 1]
  [2 3]]

 [[4 5]
  [6 7]]]


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

 [[1 5]
  [3 7]]]

3、修改数组维度

维度			描述
broadcast	产生模仿广播的对象
broadcast_to	将数组广播到新形状
expand_dims	扩展数组的形状
squeeze	从数组的形状中删除一维条目


标签:第十二,arr,numpy,np,数组,reshape,print,NumPy
From: https://blog.51cto.com/u_16200950/7240192

相关文章

  • 一维数组java练习
    1、打印下列图形*****************************************图形一:publicclassHomeWork8_24{publicstatic......
  • 数组
    1.容器:将多个数据存储到⼀起,每个数据都称为该容器的⼀个元素2.数组:数组就是⽤于存储数据的固定的容器,保证多个数据的数据类型要⼀致3.数组的特点:  1.数组的长度⼀但确定不能修改  2.创建数组时,会在内存中开辟⼀块连续的空间  3.存取元素的速度快,因为可以......
  • JavaScript 去重-对象数组中的重复对象
    先showCodeArray.from(newSet(myArray.map(JSON.stringify)),JSON.parse)myArray是一个对象数组,它是源数据。map(JSON.stringify) 的作用是将每个对象转换为JSON字符串。JSON.stringify 方法将JavaScript对象转换为JSON字符串表示。newSet(...) 创建一个新的S......
  • Leetcode1636——按照频率将数组升序排序
    给你一个整数数组 nums ,请你将数组按照每个值的频率 升序 排序。如果有多个值的频率相同,请你按照数值本身将它们 降序 排序。 请你返回排序后的数组。 示例1:输入:nums=[1,1,2,2,2,3]输出:[3,1,1,2,2,2]解释:'3'频率为1,'1'频率为2,'2'频率为3。示例2:输入:nu......
  • AWC数组显示框aw-widget初始加载时没有把数组显示出来的问题
    1、html<aw-widgetprop="data.aaaa"></aw-widget>2、model.json"aaaa":{"displayName":"aaaa","type":"STRINGARRAY","isRequired":......
  • 二维数组和交错数组
    usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;namespaceConsoleApp1{classProgram{staticvoidMain(string[]args){//交错数组Console.......
  • js判断一个元素是否在数组内
    vararr=newArray("a","ab");//使用jquery方法if($.inArray("a",arr)>-1){alert("在")}//自己写functioncontains(arr,val){vari=arr.length;while(i--){if(arr[i]===val){......
  • 5.JAVA数组
     数组声明创建 内存的使用 定义数组时数组并不存在;只有创建数组是才存在           ......
  • 代码随想录第二天|977.有序数组的平方;209.长度最小的子数组;59.螺旋矩阵II,总结
    今天的这三道题每道题对我来说都不简单,有序数组的平方和长度最小的子数组这两道题还能用暴力求解,螺旋矩阵看着简单却没有思路,磨了半小时还是决定直接看讲解有序数组平方和用的双指针的思想,代码如下:1classSolution{2public:3vector<int>sortedSquares(vector<int......
  • Python 中如何向列表或数组添加元素
    1.Python中的列表是什么?给初学者的定义编程中的数组是一个有序的项目集合,所有的项目都需要是相同的数据类型。然而,与其它编程语言不同,数组在Python中不是一个内置的数据结构。Python使用列表取代传统的数组。列表本质上是动态数组,是Python中最常见的和最强大的数据结构之......