2022-04-22:给你一个大小为 m x n 的矩阵 board 表示甲板,其中,每个单元格可以是一艘战舰 'X' 或者是一个空位 '.' ,返回在甲板 board 上放置的 战舰 的数量。...战舰 只能水平或者垂直放置在 board 上。换句话说,战舰只能按 1 x k(1 行,k 列)或 k x 1(k 行,1 列)的形状建造,其中 k 可以是任意大小。...两艘战舰之间至少有一个水平或垂直的空位分隔 (即没有相邻的战舰)。 输入:board = ["X",".",".","X",".",".",".","X",".",".",".","X"]。...甲板上的战舰。 来自米哈游。 答案2022-04-22: 并查集或者岛问题都行,但这不是最优解。 数战舰的左上角,统计左上角的点的个数就行。 时间复杂度:O(N**2)。 代码用rust编写。...for i in 0..m.len() { for j in 0..m[0].len() { if m[i][j] == 'X' && (i == 0 || m[
这是一个指示数组在每个维度上大小的整数元组。...在NumPy中,这些叫作“通用函数”(ufunc)。在NumPy里这些函数作用按数组的元素运算,产生一个数组作为输出。 ...索引:比较矩阵和二维数组 注意NumPy中数组和矩阵有些重要的区别。NumPy提供了两个基本的对象:一个N维数组对象和一个通用函数对象。其它对象都是建构在它们之上的。...对二维数组使用一个冒号产生一个一维数组,然而矩阵产生了一个二维矩阵。10例如,一个M[2,:]切片产生了一个形状为(1,4)的矩阵,相比之下,一个数组的切片总是产生一个最低可能维度11的数组。...在MATLAB中这非常简单:如果x和y是两个相同长度的向量,你仅仅需要做m=[x;y]。
在NumPy中维度(dimensions)叫做轴(axes),轴的个数叫做秩(rank)。 例如,在3D空间一个点的坐标[1, 2, 3]是一个秩为1的数组,因为它只有一个轴。...# a weird thing to do array([ 4, 10]) 注意一维数组的长度必须和你想要切片的维度或轴的长度一致,在之前的例子中,b1是一个秩为1长度为三的数组(a的行数),b2(长度为...索引:比较矩阵和二维数组 注意NumPy中数组和矩阵有些重要的区别。NumPy提供了两个基本的对象:一个N维数组对象和一个通用函数对象。其它对象都是建构在它们之上 的。...对二维数组使用一个冒号产生一个一维数组,然而矩阵产生了一个二维矩阵。10例如,一个M[2,:]切片产生了一个形状为(1,4)的矩阵,相比之下,一个数组的切片总是产生一个最低可能维度11的数组。...在MATLAB中这非常简单:如果x和y是两个相同长度的向量,你仅仅需要做 m=[x;y]。
在NumPy中,这些叫作“通用函数”(ufunc)。在NumPy里这些函数作用按数组的元素运算,产生一个数组作为输出。 ...# a weird thing to do array([ 4, 10]) 注意一维数组的长度必须和你想要切片的维度或轴的长度一致,在之前的例子中,b1是一个秩为1长度为三的数组(a的行数),b2(...索引:比较矩阵和二维数组 注意NumPy中数组和矩阵有些重要的区别。NumPy提供了两个基本的对象:一个N维数组对象和一个通用函数对象。其它对象都是建构在它们之上 的。...对二维数组使用一个冒号产生一个一维数组,然而矩阵产生了一个二维矩阵。10例如,一个M[2,:]切片产生了一个形状为(1,4)的矩阵,相比之下,一个数组的切片总是产生一个最低可能维度11的数组。...在MATLAB中这非常简单:如果x和y是两个相同长度的向量,你仅仅需要做m=[x;y]。
在NumPy中,这些叫作“通用函数”(ufunc)。在NumPy里这些函数作用按数组的元素运算,产生一个数组作为输出。 ...# a weird thing to do array([ 4, 10]) 注意一维数组的长度必须和你想要切片的维度或轴的长度一致,在之前的例子中,b1是一个秩为1长度为三的数组(a的行数),b2...索引:比较矩阵和二维数组 注意NumPy中数组和矩阵有些重要的区别。NumPy提供了两个基本的对象:一个N维数组对象和一个通用函数对象。其它对象都是建构在它们之上的。...对二维数组使用一个冒号产生一个一维数组,然而矩阵产生了一个二维矩阵。10例如,一个M[2,:]切片产生了一个形状为(1,4)的矩阵,相比之下,一个数组的切片总是产生一个最低可能维度11的数组。...在MATLAB中这非常简单:如果x和y是两个相同长度的向量,你仅仅需要做m=[x;y]。
numpy包(模块)几乎总是用于Python中的数值计算。这个软件包为Python提供了高性能的向量、矩阵、张量数据类型。...v数组和M数组的区别在于它们的尺寸(形式)。我们可以使用ndarray.shape属性来获取大小信息。 v.shape ? M.shape ?...如果我们省略了多维数组中的索引,就会返回一些值(一般情况下,N-1维的数组)。 M ? M[1] ? M[1,:]#第一行 ? M[:,1]#第一列 ? 使用索引,你可以为单个数组元素赋值。...你也可以使用掩码:如果掩码类型为bool,那么根据掩码元素的值与相应的索引,选择该元素(True)或不选择(False)。 B = array([n for n in range(5)]) B ?...9.改变阵列的形状和大小 A ? n, m = A.shape B = A.reshape((1,n*m)) B ? B[0,0:5] = 5 B ? A ?
参考链接: Python中的numpy.cosh 导入numpy:import numpy as np 一、numpy常用函数 1.数组生成函数 np.array(x):将x转化为一个数组 np.array...(x,dtype):将x转化为一个类型为type的数组 np.zeros(shape):生成shape维度大小的全0数组 np.zeros_like(a):生成与a各维度大小一致的全0数组 np.ones...:将输入数据x转化为方阵(非对角线元素为0) np.dot(a,b):矩阵乘法 np.trace(a):计算对角线元素的和 3.排序函数: np.sort(a):排序,返回a中的元素,不影响原数组...string的文件内容并转化为数组对象(或字典对象) np.loadtxt(string,delimiter):读取文件string的文件内容,以delimiter为分隔符转化为数组 二、numpy.ndarray... a[n:]:选取第n+1到最后一个元素 a[:m]:选取第1到第m个元素 a[布尔数组]:选取为true的元素 a[[x,y,m,n]]...
,只索取为True的部分,去掉False部分 通过布尔型索引选取数组中的数据,将总是创建数据的副本。...索引和切片 4.1普通索引 1 数组和标量之间的运算: 可以直接进行加减乘除的运算(对每一个元素进行) a+1 a*3 1//a a0.5 2 同样大小数组之间的运算: a+b a/b ab 3 数组的索引...NumPy:随机数生成 随机数生成函数在np.random子包内 常用函数: rand 给定形状产生随机数组(0到1之间的数) randint 给定形状产生随机整数 choice 给定形状产生随机选择...#定义了一个二维数组,大小为(2,3) x np.array([[1., 0., 0.], [0., 1., 2.]]) x.ndim #数组维度数 2 x.shape #数组的维数...,返回的格式(n,m),其中n为行数,m为列数 (2, 3) x.size #数组元素的总数 6 x.dtype #数组元素类型 np.dtype('float64') #64位浮点型 x.itemsize
i)第一组用来生成特殊规则的矩阵。如全零、全一、随机、等步长等形式。 X=zeros(m,n) %生成一个m*n的全0矩阵。...使用这个包,需要导入numpy。SciPy包以NumPy包为基础,大大的扩展了numpy的能力。...empty()建立一个空矩阵,使用内存中的随机值来填充这个矩阵。 b2=identity(n) #建立n*n的单位阵,这只能是一个方阵。 ...b3=eye(N,M=None,k=0) #建立一个对角线是1其余值为0的矩阵,用k指定对角线的位置。M默认None。 ...在numpy中,也有一个计算矩阵的函数:funm(A,func)。 5.索引 numpy中的数组索引形式和Python是一致的。
NumPy Ndarray 对象 NumPy 最重要的一个特点是其 N 维数组对象 ndarray,它是一系列同类型数据的集合,以 0 下标为开始进行集合中元素的索引。 ...数组元素的总个数,相当于 .shape 中 n*m 的值ndarray.dtypendarray 对象的元素类型ndarray.itemsizendarray 对象中每个元素的大小,以字节为单位ndarray.flagsndarray...布尔索引 我们可以通过一个布尔数组来索引目标数组。 布尔索引通过布尔运算(如:比较运算符)来获取符合指定条件的元素的数组。 ...假设数组 a 的维度为 3X4,数组 b 的维度为 1X4 ,则使用以下迭代器(数组 b 被广播到 a 的大小)。 ...一个 m × n m \times n m×n 的矩阵是一个由 $ m $ 行(row)列 $ n $(column)元素排列成的矩形阵列
NumPy - 高级索引 如果一个ndarray是非元组序列,数据类型为整数或布尔值的ndarray,或者至少一个元素为序列对象的元组,我们就能够用它来索引ndarray。高级索引始终返回数据的副本。...然而,在 NumPy 中仍然可以对形状不相似的数组进行操作,因为它拥有广播功能。较小的数组会广播到较大数组的大小,以便使它们的形状可兼容。...如果满足以下规则,可以进行广播: ndim较小的数组会在前面追加一个长度为 1 的维度。 输出数组的每个维度的大小是输入数组该维度大小的最大值。...如果输入在每个维度中的大小与输出大小匹配,或其值正好为 1,则在计算中可它。 如果输入的某个维度大小为 1,则该维度中的第一个数据元素将用于该维度的所有计算。...y轴上的对应值存储在另一个数组对象y中。这些值使用matplotlib软件包的pyplot子模块的plot()函数绘制。 图形由show()函数展示。 上面的代码应该产生以下输出: ?
参考链接: Python中的numpy.log1p 文章目录 一、创建数组二、数组操作类型1. 数组属性2. 数组索引:获取单个元素3. 切片4. 数组的变形5....axis=0每列,axis=1每行大多数聚合有对NaN值的安全处理策略(NaN-safe)(以上除any all均有,在方法前加nan,如np.nansum),计算时忽略所有的缺失值。...如果两个数组的形状在任何一个维度上都不匹配,那么数组的形状会沿着维度为1的维度扩展以匹配另外一个数组的形状。如果两个数组的形状在任何一个维度上都不匹配并且没有任何一个维度等于1,那么会引发异常。 ...a.shape -> (n,) 二维数组 b.shape -> (m, n) 第一步 a.shape -> (n,)补足为(1, n) 第二步 a.shape -> (1, n)扩展(m, n) ->...方法一 [x[3], x[7], x[2]] # 方法二:通过传递索引的单个列表或数组来获得同样的结果 ind = [3, 7, 4] x[ind] # 利用花哨索引使结果的形状与索引数组形状一致,而不是与被索引数组形状一致
ndarray 和 标准Python 数组的区别如下: (1)ndarray 在创建时具有固定的大小, 更改ndarray的大小将创建一个新数组并删除原来的数组,与Python的原生数组对象(可以动态增长...ndarray.shape:数组的维度,是一个整数的元组,表示每个维度中数组的大小。对于n行和m列的矩阵,shape是(n,m)。因此,shape元组的长度就是rank或维度的个数 ndim。...,布尔索引通过布尔运算(如:比较运算符)来获取符合指定条件的元素的数组。...假设数组 a 的维度为 3X4,数组 b 的维度为 1X4 ,则使用迭代器(数组 b 被广播到 a 的大小)如下: import numpy if __name__ == "__main__":...n: 返回矩阵的行数 M: 返回矩阵的列数,默认为 n k: 对角线的索引 dtype: 数据类型 numpy.matlib.identity(n,dtype=None) 返回给定大小的单位矩阵。
在 NumPy 中,这些被称为“通用函数”(ufunc)。在 NumPy 中,这些函数对数组进行逐元素操作,产生一个数组作为输出。...在 NumPy 中,这些被称为“通用函数”(ufunc)。在 NumPy 中,这些函数对数组进行逐元素操作,产生一个数组作为输出。...NumPy 还允许您使用点...来编写这个表达式,即b[i, ...]。 点 (...) 表示需要产生一个完整索引元组所需的冒号数量。...在 NumPy 中,这些被称为“通用函数”(ufunc)。在 NumPy 中,这些函数对数组进行逐元素操作,并产生一个数组作为输出。...NumPy 还允许您使用点号表示为b[i, ...]。 省略号(...)表示为产生一个完整索引元组所需的冒号。
参考链接: Python中的numpy.amin NumPy Ndarray 对象 NumPy 最重要的一个特点是其 N 维数组对象 ndarray,它是一系列同类型数据的集合,以 0 下标为开始进行集合中元素的索引...从索引 2 开始到索引 7 停止,间隔为 2 print(b) 输出结果为: [2 4 6] 冒号 : 的解释:如果只放置一个参数,如 [2],将返回与该索引相对应的单个元素。...假设数组 a 的维度为 3X4,数组 b 的维度为 1X4 ,则使用以下迭代器(数组 b 被广播到 a 的大小)。 ...numpy.matlib.eye(n, M,k, dtype) 参数说明: n: 返回矩阵的行数 M: 返回矩阵的列数,默认为 n k: 对角线的索引 dtype: 数据类型 numpy.matlib.identity...逆矩阵(inverse matrix):设A是数域上的一个n阶矩阵,若在相同数域上存在另一个n阶矩阵B,使得: AB=BA=E ,则我们称B是A的逆矩阵,而A则被称为可逆矩阵。注:E为单位矩阵。
注意在numpy中,当某个轴的指定为-1时,此时numpy会根据实际的数组元素个数自动替换-1为具体的大小,如第二例,我们指明了c仅有一列,而b数组有12个元素,因此c被自动指定为12行1列的矩阵,即一个...4 元素索引和修改 简单的索引形式和切片: 当使用布尔数组b作为下标存取数组x中的元素时,将收集数组x中所有在数组b中对应下标为True的元素。...下面给一个计算sin函数(sin函数计算数组中全部元素的sin值)的小实例: 四则运算符可以直接用于数组(一维或多维)计算: 比较操作也可直接进行,如下,比较x1和x2各对应元素的大小,返回的是一个...,计算外积):若数组a的维数为M,数组b的维数为N,则ufunc函数op的outer()方法对a、b数组计算所生成的数组c的维数为M+N,c的形状是a、b的形状的结合。...a是一个N*N的二维数组,而b是一个长度为N的一维数组,solve函数找到一个长度为N的一维数组x,使得a和x的矩阵乘积正好等于b,数组x就是多元一次方程组的解。
返回一个与 element 相同形状的布尔数组,其中 element 的元素在 test_elements 中为 True,否则为 False。...keepdims布尔值,可选 如果设置为 True,则被减少的轴将作为大小为一的维度保留在结果中。使用此选项,结果将正确地广播到数组。 在 1.22.0 版本中新增。...给定数组 a,条件 a > 3 是一个布尔数组,因为 False 被解释为 0,np.nonzero(a > 3)产生条件为真的 a 的索引。...]) 使用非零元素的索引作为索引数组来提取这些元素: >>> x.ravel()[np.flatnonzero(x)] array([-2, -1, 1, 2]) numpy.where 原文...如果没有合适的索引,返回 0 或 N(其中 N 为a的长度)。 sorter1-D 数组样式,可选 整数索引数组,将数组a排序为升序。它们通常是 argsort 的结果。
以一个整型元组的方式表示数组中每个维度的大小。比如对一个有 n 行 m 列的矩阵来说,其 shape 属性为 (n, m)。...我们可以使用 Python 标准类型来创建指定该对象,NumPy 也提供了自己的类型,如 numpy.int32, numpy.int16, and numpy.float641 等 ndarray.itemsize...数组中每个元素的字节大小。.... , 1.6, 2.2, 2.8, 3.4, 4. ]) 从文件中读入 使用 numpy.genfromtxt,这里以读入 CSV 文件为例 import numpy as np myFile...在 NumPy 中,这些函数都产生一个数组作为输出 由于比较多,我把它放到了脚注6 因为其中的很多函数都涉及到 axis 这个参数,这里就来简单介绍一下这个参数怎么指定,我们不妨以 np.sum() 来探究
ndarray是非元组序列,数据类型为整数或布尔值的ndarray,或者至少一个元素为序列对象的元组,我们就能够用它来索引ndarray。...如果输入在每个维度中的大小与输出大小匹配,或其值正好为 1,则在计算中可它。 如果输入的某个维度大小为 1,则该维度中的第一个数据元素将用于该维度的所有计算。...假设数组a具有维度 3X4,并且存在维度为 1X4 的另一个数组b,则使用以下类型的迭代器(数组b被广播到a的大小)。...'\n' # 要注意 a 的第一行在 b 中重复出现,因为尺寸变大了 print '修改第二个数组的大小:' b = np.resize(a,(3,3)) print b 输出如下: 第一个数组...numpy.angle() 返回复数参数的角度。 函数的参数是degree。 如果为true,返回的角度以角度制来表示,否则为以弧度制来表示。
领取专属 10元无门槛券
手把手带您无忧上云