Numpy 中tile(A, reps)方法

官方文档:

个人理解:

返回值

ndarray,该函数是通过reps重复A后得到一个多位数组, 有点绕...

参数

A几乎可以是全体类型, array, list , tuple, dict, matrix, int, long ,str, bool 等等

reps,类型也很多, array, tuple, list, dict ,int ,long, bool 但是不管怎样都必须是 “一维数组(不一定是数组, 这里说成类一维数组)” , 如[1,2,3,4] , (1,2,3)或 3等等

实现过程

1:   设 ndim = A的维度, ndimsA[] = A 各个坐标分量的长度

d = reps的长度(由于reps必须是“类一维数组”)

ans = tile(A, d) , ndimsAns[] = ans各个坐标分量的长度

2:   ans.ndim = max(A. ndim, d)

如果  A.ndim >= d:

例如ndims = (2,3,4,5) , reps = (2,2)

那么ndims[]不变, 在reps数组前面添加A.ndim-d个‘1’,   那么reps = (1,1,2,2)

否则 A.ndim < d:

例如ndims = (2,3), reps = (1,2,3,4)

此时ndims维度不够, 应该增加维度到d, 同理在ndims前面添加d-A.ndims个‘1’, 即 ndims(1,1,2,3)

3:  计算ndimsAns[]

由于通过2已经使得ndims和reps长度相同,故 ndimsAns = (ndism[0] * reps[0] , ndims[1] * reps[1], ndims[2] * reps[2],...) 对索引的值相乘

例如 ndims = (2,3,4,5) , reps = (2,2)

那么ndimsAns = (2*1, 3*1, 4*2,5*2) = (2,3,8,10)

4:   计算ans

通过2确定了ans的维度大小,  通过3确定了ans各个维度分量的长度

注意维度的重复是先从右边开始的(可以理解为从低维开始) ,具体见下面的例子

举例说明:

>>> A = array([[1,2],[3,4]])

>>> A

array([[1, 2],

[3, 4]])

>>> reps = (1,2,3)

>>> ans = tile(A,reps)

>>> ans

array([[[1, 2, 1, 2, 1, 2],

[3, 4, 3, 4, 3, 4],

[1, 2, 1, 2, 1, 2],

[3, 4, 3, 4, 3, 4]]])

>>> ans.shape

(1, 4, 6)

从低维开始, 列重复3次,得到A‘ =[ [1,2,1,2,1,2],

[3,4,3,4,3,4]]

让后行从重复2次, 得到A‘‘ = [   [[1,2,1,2,1,2],

[3,4,3,4,3,4],

[1,2,1,2,1,2],

[3,4,3,4,3,4]]    ]

最后层重复1次(没有变化), ans = [   [[1,2,1,2,1,2],

[3,4,3,4,3,4],

[1,2,1,2,1,2],

[3,4,3,4,3,4]]    ]

因此最有一个(1,4,6)的3维数组

Numpy 中tile(A, reps)方法

时间: 2024-07-31 02:29:54

Numpy 中tile(A, reps)方法的相关文章

numpy中tile函数

tile函数位于python模块numpy.lib.shape_base中,他的功能是重复某个数组. 函数的形式是tile(A,reps) 函数参数说明中提到A和reps都是array_like的,什么是array_like的parameter呢?在网上查了一下,始终搞不明白,便把熟悉的python数据类型都试了一下,得出以下结论. A的类型众多,几乎所有类型都可以:array, list, tuple, dict, matrix以及基本数据类型int, string, float以及bool类

numpy中shape的使用方法

首先翻译官方的文档 shape(a)返回一个array的shape(还是有点模糊,先看下面) 参数 a:类数组,数组(这个类数组是?) 类数组可以是列表,比如说 a = range(5) shape(a) b = [[1,2],[2,4]] shape(b) 数组的话可以是numpy数组 a = array(range(4)) b = array([1,2],[3,3]) 返回: 一个元组,里面是一些int类型 其中,每一个元素代表原数组中每一维的长度

numpy中的ndarray方法和属性

原文地址 NumPy数组的维数称为秩(rank),一维数组的秩为1,二维数组的秩为2,以此类推.在NumPy中,每一个线性的数组称为是一个轴(axes),秩其实是描述轴的数量.比如说,二维数组相当于是一个一维数组,而这个一维数组中每个元素又是一个一维数组.所以这个一维数组就是NumPy中的轴(axes),而轴的数量--秩,就是数组的维数. Numpy库中的矩阵模块为ndarray对象,有很多属性:T,data, dtype,flags,flat,imag,real,size, itemsize,

[笔记]numpy中的tile与kron的用法

numpy中提供了不少数学中矩阵的运算.构造函数. 闭上眼睛想一想,发现其中常用的也就是那么几个:cos, sin, mean, dot, max,min, outer,argsort,ones,zeros,arrange,reshape,fft---等. 想了半天,可以也不超过30个左右常用函数. 但是numpy的确博大精深:查看文档发现有大概586个方法或属性! 今天,我就记录一下numpy中,矩阵运算tile与kron的用处之一吧. 确切的讲,是谈论的在向量化运算方面的用处. 记得高等代数

Numpy中数据的常用的保存与读取方法

Numpy中数据的常用的保存与读取方法 小书匠 深度学习 文章目录: 1.保存为二进制文件(.npy/.npz) numpy.save numpy.savez numpy.savez_compressed 2.保存到文本文件 numpy.savetxt numpy.loadtxt 在经常性读取大量的数值文件时(比如深度学习训练数据),可以考虑现将数据存储为Numpy格式,然后直接使用Numpy去读取,速度相比为转化前快很多. 下面就常用的保存数据到二进制文件和保存数据到文本文件进行介绍: 1.保

Numpy的tile函数

1.函数的定义与说明 tile函数是模板numpy.lib.shape_base中的函数. 函数的形式是tile(A,reps) 函数参数说明中提到A和reps都是array_like的,什么是array_like的parameter呢?在网上查了一下,始终搞不明白,便把熟悉的python数据类型都试了一下,得出以下结论. A的类型众多,几乎所有类型都可以:array, list, tuple, dict, matrix以及基本数据类型int, string, float以及bool类型. re

scikit-learn中PCA的使用方法

scikit-learn中PCA的使用方法 @author:wepon @blog:http://blog.csdn.net/u012162613/article/details/42192293 在前一篇文章 主成分分析(PCA) 中,我基于python和numpy实现了PCA算法,主要是为了加深对算法的理解,算法的实现很粗糙,实际应用中我们一般调用成熟的包,本文就结束scikit-learn中PCA使用的方法和需要注意的细节,参考:sklearn.decomposition.PCA 1.函数

numpy 中的reshape,flatten,ravel 数据平展,多维数组变成一维数组

numpy 中的reshape,flatten,ravel 数据平展,多维数组变成一维数组 import numpy as np 使用array对象 arr1=np.arange(12).reshape(3,4) print(arr1) print(type(arr1)) [[ 0 1 2 3] [ 4 5 6 7] [ 8 9 10 11]] <class 'numpy.ndarray'> flatten 展平 a=arr1.flatten() # 默认参数order=C,按照行进行展平:o

numpy中数组的简单运算以及使用

import numpy as np # 定义一个数组 test_array = np.array([[1 ,2 ,3] ,[3 ,4 ,5]]) ###数组简单的加减乘除法 # 加法 print(test_arra y +1) # 返回[[2 3 4][4 5 6]] # 减法 print(test_arra y -11) # 返回[[-10 -9 -8][ -8 -7 -6]] # 乘法 print(test_arra y *3) # 返回[[ 3 6 9][ 9 12 15]] # 除法