精华内容
下载资源
问答
  • 2020-11-27 23:51:08

    如果python使用numpy创建多维数组会比较简单

    但是不用numpy呢?

    二维数组的创建:

    3行10列的二维数组的创建:

    m = [[0]*3 for _ in range(10)]

    或者

    m = [[0]*3]*10

    我们来检查一下数组创建的对不对

    for i in range(10):

    for j in range(3):

    try:

    if (m[i][j] != 0): print(i,j)

    except:

    print(i,j,"error")

    没有输出error有关的东西,正确!

    三维数组的创建:

    4行3列,Z=2的三维数组的创建:

    m = [[[0] * 2 for _ in range(3) ] for _ in range(4)]

    或者

    m = [[[0]*2]*3]*4

    检查:

    for i in range(4):

    for j in range(3):

    for k in range(2):

    try:

    if (m[i][j][k] != 0): print(i, j,k);

    except:

    print(i,j,k ,"error")

    没有输出error有关的东西,正确!

    接下来多维数组的创建也就很简单了

    m = [.....[[0]*q]*w]*e]*r]*t]*y]*u]*.........]

    更多相关内容
  • 本文实例讲述了Python操作多维数组输出和矩阵运算。分享给大家供大家参考,具体如下: 在许多编程语言中(Java,COBOL,BASIC),多维数组或者矩阵是(限定各维度的大小)预先定义好的。而在Python中,其实现更简单...
  • x in enumerate(new)] for old, new in zip(old_arr, new_arr)] print(new_arr) 哪些输出: ^{pr2}$ 更新: 下面是一个处理相邻单元的暴力解决方案:old_arr = [[8,8,8,8,0,0,0,0,6,6,5,5], [8,8,8,8,0,0,0,0,6,6,5...

    假设old_arr和new_arr长度相同,可以这样做:old_arr = [[8,8,8,8,0,0,0,0,6,6,5,5], [8,8,7,0,0,0,0,0,6,6,5,5]]

    new_arr = [[9,9,6,7,3,6,5,0,6,4,3,4], [9,0,6,7,4,6,5,0,6,4,3,4]]

    new_arr = [[x if old[i] else 0 for i, x in enumerate(new)] for old, new in zip(old_arr, new_arr)]

    print(new_arr)

    哪些输出:

    ^{pr2}$

    更新:

    下面是一个处理相邻单元的暴力解决方案:old_arr = [[8,8,8,8,0,0,0,0,6,6,5,5],

    [8,8,8,8,0,0,0,0,6,6,5,5],

    [8,8,8,8,0,0,0,0,6,6,5,5],

    [8,8,8,8,0,0,0,0,6,6,5,5]]

    new_arr = [[9,9,6,7,3,6,5,0,6,4,3,4],

    [9,9,6,7,3,6,5,0,6,4,3,4],

    [9,9,6,7,3,6,5,0,6,4,3,4],

    [9,9,6,7,3,6,5,0,6,4,3,4]]

    def first_last(row, next_row, old, new):

    for i in range(len(new[row])):

    count = 0

    if old[row][i] == 0:

    if old[row][i-1] == 0:

    count += 1

    if old[row][i+1] == 0:

    count += 1

    if old[next_row][i] == 0:

    count += 1

    if old[next_row][i-1] == 0:

    count += 1

    if old[next_row][i+1] == 0:

    count += 1

    if count > 4:

    new[row][i] = 0

    def middle(old, new):

    for i, l in enumerate(new[1:-1]):

    for j in range(len(l)):

    count = 0

    if old[i][j] == 0:

    if old[i][j-1] == 0:

    count += 1

    if old[i][j+1] == 0:

    count += 1

    if old[i-1][j] == 0:

    count += 1

    if old[i-1][j-1] == 0:

    count += 1

    if old[i-1][j+1] == 0:

    count += 1

    if old[i+1][j] == 0:

    count += 1

    if old[i+1][j-1] == 0:

    count += 1

    if old[i+1][j+1] == 0:

    count += 1

    if count > 4:

    l[j] = 0

    # first row

    first_last(0, 1, old_arr, new_arr)

    # middle rows

    middle(old_arr, new_arr)

    # last row

    first_last(-1, -2, old_arr, new_arr)

    print(new_arr)

    哪些输出:[[9, 9, 6, 7, 3, 0, 0, 0, 6, 4, 3, 4],

    [9, 9, 6, 7, 0, 0, 0, 0, 6, 4, 3, 4],

    [9, 9, 6, 7, 0, 0, 0, 0, 6, 4, 3, 4],

    [9, 9, 6, 7, 3, 0, 0, 0, 6, 4, 3, 4]]

    注意:这可以做得更好,但您可以根据自己的喜好对其进行优化。在

    展开全文
  • 可以将这些行转换为1D数组,使用元素作为二维索引,并使用^{}。然后,使用^{}给我们每个唯一行的开始位置,并且还有一个可选参数return_counts来给我们计数。因此,实现将如下所示-def unique_rows_counts(a):# ...

    可以将这些行转换为1D数组,使用元素作为二维索引,并使用^{}。然后,使用^{}给我们每个唯一行的开始位置,并且还有一个可选参数return_counts来给我们计数。因此,实现将如下所示-def unique_rows_counts(a):

    # Calculate linear indices using rows from a

    lidx = np.ravel_multi_index(a.T,a.max(0)+1 )

    # Get the unique indices and their counts

    _, unq_idx, counts = np.unique(lidx, return_index = True, return_counts=True)

    # return the unique groups from a and their respective counts

    return a[unq_idx], counts

    样本运行-

    ^{pr2}$

    标杆管理

    假设您可以将numpy数组或集合作为输出,那么可以对迄今为止提供的解决方案进行基准测试,如下-

    功能定义:import numpy as np

    from collections import Counter

    def unique_rows_counts(a):

    lidx = np.ravel_multi_index(a.T,a.max(0)+1 )

    _, unq_idx, counts = np.unique(lidx, return_index = True, return_counts=True)

    return a[unq_idx], counts

    def map_Counter(a):

    return Counter(map(tuple, a))

    def forloop_Counter(a):

    c = Counter()

    for x in a:

    c[tuple(x)] += 1

    return c

    时间安排:In [53]: a = np.random.randint(0,4,(10000,5))

    In [54]: %timeit map_Counter(a)

    10 loops, best of 3: 31.7 ms per loop

    In [55]: %timeit forloop_Counter(a)

    10 loops, best of 3: 45.4 ms per loop

    In [56]: %timeit unique_rows_counts(a)

    1000 loops, best of 3: 1.72 ms per loop

    展开全文
  • Numpy中定义的最终对象是称为ndarray的N维数组类型。它描述相同类型的元素集合。可以使用基于零的索引访问集合中的项目。ndarray创建方式array()函数接收一个普通的python序列,并将其转换为ndarray。numpy.array...

    Numpy中定义的最终对象是称为ndarray的N维数组类型。它描述相同类型的元素集合。可以使用基于零的索引访问集合中的项目。

    ndarray创建方式

    array()函数

    接收一个普通的python序列,并将其转换为ndarray。

    numpy.array(object, dtype = None, copy = True, order = None, subok = False, ndmin = 0)

    序号

    参数

    描述

    1

    object

    任何暴露数组接口方法的对象都会返回一个数组或任何(嵌套)序列。

    2

    dtype

    数组的所需数据类型,可选。

    3

    copy

    可选,默认为true,对象是否被复制。

    4

    order

    C(按行)、F(按列)或A(任意,默认)。

    5

    subok

    默认情况下,返回的数组被强制为基类数组。如果为true,则返回子类。

    6

    ndimin

    指定返回数组的最小维数。import numpy as np

    # 例子01

    a = np.array([1,2,3])

    print(a)

    print(type(a))

    # 多于一个维度

    a2 = np.array([[1,2],[3,4]])

    print(a2)

    # 最小维度

    a3 = np.array([1,2,3,4,5],ndmin = 2)

    print(a3)

    empty()函数

    创建指定形状和dtype的未初始化数组

    numpy.empty(shape, dtype = float, order = 'C')

    序号

    参数

    描述

    1

    Shape

    空数组的形状,整数或整数元组

    2

    Dtype

    所需的输出数组类型,可选

    3

    Order

    'C’为按行的 C 风格数组,'F’为按列的 Fortran 风格数组import numpy as np

    #例: 数组元素为随机值

    arr = np.empty((3,3),dtype = 'i1')

    print(arr)

    zeros()函数

    创建指定长度或者形状的全零数组。

    # 例

    arr = np.zeros((3,3))

    print(arr)

    # 自定义类型

    arr = np.zeros((3,3), dtype = [('x', 'i4'), ('y', 'i4')])

    print(arr)

    ones()函数

    创建指定长度或者形状的全1数组。

    arr = np.ones((2,3,4))

    print(arr)

    # 自定义类型

    arr = np.ones((3,3), dtype = [('x', 'i4'), ('y', 'i4')])

    print(arr)

    asarray()函数

    类似 numpy.array 可以将Python序列转换为ndarray。

    # 来自列表

    arr = [1,2,3,4]

    arr2 = np.asarray(arr)

    print(arr2)

    print(type(arr))

    print(type(arr2))

    # 来自元组

    arr = (1,2,3,4)

    arr2 = np.asarray(arr)

    print(arr2)

    print(type(arr))

    print(type(arr2))

    # 来自元组列表

    arr = [(1,2,3,4),(5,6,7,8)]

    arr2 = np.asarray(arr)

    print(arr2)

    print(type(arr))

    print(type(arr2))

    arange()函数

    类似python的range函数,通过指定开始值、终值和步长来创建一个一维数组,注意:最终创建的数组不包含终值。

    numpy.arange(start,stop,step,dtype)

    arr = np.arange(5,dtype = float)

    print(arr)

    linspace()函数

    通过指定开始值、终值和元素个数来创建一个一维数组,数组的数据元素符合等差数列,可以通过endpoint关键字指定是否包含终值,默认包含终值。

    等差数列

    numpy.linspace(start,stop,num,endpoint,retstep,dtype)

    序号

    参数

    描述

    1

    start

    起始值

    2

    stop

    结束值

    3

    num

    生成等间隔样例的数量,默认为50

    4

    endpoint

    序列中是否包含stop 值 默认为 Truearr = np.linspace(10,20,9)

    print(arr)

    arr = np.linspace(10,20,5,endpoint=False)

    print(arr)

    arr = np.linspace(10,20,5,retstep=True)

    print(arr) #返回步长

    logspace()函数

    和linspace函数类似,不过创建的是等比数列数组。

    numpy.logscale(start, stop, num, endpoint, base, dtype)

    序号

    参数

    描述

    1

    start

    起始值是base ** start

    2

    stop

    终止值是base ** stop

    3.

    num

    范围内的数值数量,默认为50

    4

    endpoint

    如果为true,终止值包含在输出数组当中

    5

    base

    对数空间的底数,默认为10

    6

    dtype

    输出数组的数据类型,如果没有提供,则取决于其它参数arr = np.logspace(0,2,5)

    # 0表示10的0次方,2表示10的2次方,5表示最终生成元素数量为5

    print(arr)

    arr1 = np.logspace(1,10,5,base = 2)

    print(arr1)

    random()函数

    使用随机数填充数组,即使用numpy.random中的random()函数来创建0-1之间的随机元素,数组包含的元素数量由参数决定。

    序号

    参数

    描述

    1

    rand

    返回 0 - 1 随机值

    2

    randn

    返回一个样本具有标准正态分布

    3

    randint

    返回随机的整数,位于半开区间[low,hight)size = 10 (3,3)

    4

    random_integers(low[, high, size])

    返回随机的整数,位于闭区间

    5

    random

    返回随机浮点数arr = np.random.rand(9).reshape(3,3)

    print(arr)

    arr = np.random.rand(3,2,3)

    print(arr)

    arr = np.random.randn(9).reshape(3,3)

    print(arr)

    arr = np.random.randn(3,2,3)

    print(arr)

    arr = np.random.randint(1,9,size = (2,4))

    print(arr)

    arr = np.random.random_integers(1,9,size =(2,4))

    print(arr)

    arr = np.random.random((3,2,3))

    print(arr)

    arr = np.random.randn(3,2,3)

    print(arr)

    ndarray对象属性

    shape

    数组的维度。

    这个数组属性返回一个包含数组维度的元组,它也可以用于调整数组大小。

    a = np.array([[1,2,3],[4,5,6]])

    print(a) # [[1 2 3]

    #[4 5 6]]

    print(a.shape) # (2, 3)

    调整数组大小

    a = np.array([[1,2,3],[4,5,6]])

    a.shape=(3,2)

    print(a)

    reshape 调整数组大小。

    a = np.array([[1,2,3],[4,5,6]])

    b = a.reshape(3,2)

    print(b)

    ndim

    数组轴(维度)的个数。

    a = np.arange(24)

    print(a)

    print(a.ndim)

    b = a.reshape(2,4,3)

    print(b)

    print(b.ndim)

    print(b.shape)

    itemsize

    数组中每个元素的字节大小。

    #数组的int8 一个字节

    x = np.array([1,2,3,4,5], dtype = np.int8)

    print(x.itemsize)

    数组的float32 4个字节

    x = np.array([1,2,3,4,5], dtype = np.float32)

    print(x.itemsize)

    size

    数组元素的总个数,等于shape属性中元组元素的乘积。

    arr = np.arange(18).reshape(2,3,3)

    print(type(str(arr)))

    print(arr.shape)

    print(arr.size)

    dtype

    描述数组中元素类型的对象。

    数据类型

    类型简写

    说明

    int_

    默认整形

    intc

    等价于long的整形

    int8

    i1

    字节整形,1个字节,范围:[-128,127]

    int16

    i2

    整形,2个字节,范围:[-32768,32767]

    int32

    i3

    整形,4个字节,范围:[-2^31, 2^31-1]

    int64

    i4

    整形,8个字节,范围:[-2^63, 2^63-1]

    uint8

    u1

    无符号整形, 1个字节, 范围:[0,255]

    uint16

    u2

    无符号整形, 2个字节, 范围:[0,65535]

    uint32

    u3

    无符号整形, 1个字节, 范围:[0, 2^32-1]

    uint64

    u4

    无符号整形, 1个字节, 范围:[0,2^64-1]

    bool_

    以一个字节形成存储的布尔值(True或者False)

    float_

    float64简写形式

    float16

    f2

    半精度浮点型(2字节):1符号位+5位指数+10位的小数部分

    float32

    f4或者f

    单精度浮点型(4字节):1符号位+8位指数+23位的小数部分

    float64

    f8或者d

    双精度浮点型(8字节):1符号位+11位指数+52位的小数部分

    complex_

    c16

    complex128的简写形式

    complex64

    c8

    complex128的简写形式

    complex128

    c16

    复数,由两个64位的浮点数来表示

    object

    O

    Python对象类型

    String_

    S

    固定长度的字符串类型(每个字符1个字节),比如:要创建一个长度为8的字符串,应该使用S8

    Unicode_

    U

    固定长度的unicode类型的字符串(每个字符占用字节数由平台决定),长度定义类似String_类型import numpy as np

    # 使用数组标量类型

    dt = np.dtype(np.int32)

    print(dt)

    # int8,int16,int32,int64 可替换为等价的字符串 'i1','i2','i4',以及其他。

    dt = np.dtype('i4')

    print(dt)

    结构化数据类型

    dt = np.dtype([('age',np.int8)])

    print(dt)

    #将结构化数据应用于ndarray对象

    dt = np.dtype([('age',np.int8)])

    a = np.array([(10,),(20,),(30,)],dtype = dt)

    print(a)

    #访问age列内容

    dt = np.dtype([('age','i1')])

    a = np.array([(10,),(20,),(30,)],dtype = dt)

    print(a['age'])

    #结构化数据包含多个字段

    student = np.dtype([('name','S20'),('age','i1'),('marks','f4')])

    a = np.array([('joe',20,80),('susan',22,85),('tom',23,90),('fank',23,33)],dtype=student)

    print(a)

    print(a['name'])

    每个数据类型都有一个类型代码,即简写方式!

    布尔值

    符号整数

    无符号整数

    浮点

    复数浮点

    时间间隔

    日期时间

    Python 对象

    字节串

    Unicode

    原始数据(void)

    b

    i

    u

    f

    c

    m

    M

    O

    S\a

    U

    V

    展开全文
  • # 输出数组的行和列数 print(x.shape) # (4,5 ) # 只输出行数 print(x.shape[0]) # 4 # 只输出列数 print(x.shape[1]) # 5 2.图片数组 import cv2 img=cv2.imread(r'E:\pythonpycharm\yuan_Faster-RCNN
  • Python多维数组索引说明

    千次阅读 2021-02-03 20:47:08
    这意味着x[t]将是一个三维数组,即使{}本身只是一个二维数组。在 注意,在结果的形状(3,3,3)中,前两个{}由高级索引t贡献,最后一个{}由隐式基本索引:贡献。这两个指标t和{}也使用不同的方法得出各自的贡献。来自...
  • Python多维数组切片

    千次阅读 2020-12-19 11:11:52
    2. list切片类似C数组,多维度分别用”[]“索引,单维度切片用”:“,如:>>> a[[1, 2, 3], [4, 5, 6], [7, 8, 9]]>>> a[1][1:3][5, 6]但是这样做第二个维度索引不起作用:>>> a[1:3][0:...
  • python多维数组(二)

    千次阅读 2019-08-01 16:51:19
    多维数组ndarray访问、修改字段访问、基本切片高级索引Numpy算数运算Numpy矩阵积Numpy广播 ndarray访问、修改 ndarray对象的内容可以通过索引或者切片来访问和修改,就像python的内置容器对象一样。 ndarray对象中的...
  • 您可能感兴趣的文章:Python操作多维数组输出和矩阵运算示例python读取图片的方式,以及将图片以三维数组的形式输出方法python实现将一个数组逆序输出的方法python中实现将多个print输出合成一个数组Python实现二维...
  • python多维数组变一维数组 b=a.flatten() #将多维数组变为1维数组 具体代码如下: import numpy as np #1.随机生成一个4行3列的多维数组a a=np.random.randn(4,3) print(a) print(type(a)) #输出结果: [[-0....
  • python3 多维数组 NumPy ndarray 简介

    千次阅读 2020-07-06 11:16:52
    多维数组 一维 通用数学函数 基础 NumPy 的主要对象是齐次多维数组。它是一个元素表(通常是元素是数字),其中所有元素类型都相同,元素以正整数元组索引。在 NumPy 维度(dimension)被称为轴(axis)。 ps....
  • 展开全部在Python中,一个像这样的多维表格可以通过“序列的序636f707962616964757a686964616f31333365646263列”实现。一个表格是行的序列。每一行又是独立单元格的序列。这类似于我们使用的数学记号,在数学里我们...
  • 遍历这个数组,当然维数不确定的话你就需要使用递归,然后一一判断它的值是否为你指定的值,然后输出索引。另外,建议不要匿名提问,因为这会让很多高手不屑于回答你的问题。追问:能具体帮写一下吗?我试了好多次都...
  • python之numpy多维数组

    2020-11-27 23:51:31
    今天就针对多维数组展开来写博客numpy其一部分功能如下:1.ndarray,是具有矢量算术运算且节省空间的多维数组。2.可以用于对整组的数据快速进行运算的辨准数学函数。3.能够用于读写磁盘数据的工具以及用于操作系统...
  • #变成多维数组 a1 = a.reshape([4, 5]) print(a1) #尝试降维,失败 a2 = a1.reshape(1,20) print(a2) #尝试降维,失败 a3 = a1.reshape(20,1) print(a3) #尝试降维,成功:即reshape函数只需要一个输入量即可。若...
  • Python中初始化一个5 x 3每项为0的数组,最好方法是:multilist=[[0forcolinrange(5)]forrowinrange(3)]我们知道,为了初始化一个一维数组,我们可以这样做:alist=[0]*5没错,那我们初始化一个二维数组时,是否可以...
  • 另一种选择是多维列表位置索引:import numpy as npncol = 10 # 10 in your casenrow = 500 # 500 in your case# just creating some test data:x = np.arange(ncol*nrow).reshape(nrow,ncol)y = (ncol * np.random....
  • #函数:用于将多维数组左右拆分成两份 # def DvdArr(arr,n): for i in range(len(a)): for j in range(len(a[0])): a[i][j]=random.random() print("原a数组:") print(a) [b11,b12]=a[:,0:2]#按列切分,从第1...
  • 它只是指定了输出数组的形状。因此,在您的示例中,您需要告诉numpy,前5个值将从a[0]中提取,后5个值将从a[1]中提取。容易的!在>>> a[[[0]*5,[1]*5],index] 它在N维中变得很复杂,但是让我们对我上面定义的三维...
  • Python 初始化多维数组代码

    千次阅读 2021-01-15 02:02:32
    Python中初始化一个5 x 3每项为0的数组,最好方法是:multilist=[[0forcolinrange(5)]forrowinrange(3)]我们知道,为了初始化一个一维数组,我们可以这样做:alist=[0]*5没错,那我们初始化一个二维数组时,是否可以...
  • 今天就针对多维数组展开来写博客numpy其一部分功能如下:1.ndarray,是具有矢量算术运算且节省空间的多维数组。2.可以用于对整组的数据快速进行运算的辨准数学函数。3.能够用于读写磁盘数据的工具以及用于操作系统...
  • Python查看多维数组List的维度

    万次阅读 2020-06-28 16:54:47
    直接用`len()`函数只能得到最外面一层`[]`的维度。 因此,先把list转成numpy数组,再用numpy数组的`shape`属性获取数组维度。
  • 您可能感兴趣的文章:在Python中输入一个以空格为间隔的数组方法python分割文件的常用方法python分割列表(list)的方法示例python多维数组切片方法python使用pandas实现数据分割实例代码对Python 数组的切片操作...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 17,075
精华内容 6,830
关键字:

python输出多维数组