NumPy(二):创建数组【生成固定范围的数组:arange、linspace】【生成0和1的数组:zeros()等】【从现有数组生成:array、asarray】【生成随机数组:np.random】

本文主要是介绍NumPy(二):创建数组【生成固定范围的数组:arange、linspace】【生成0和1的数组:zeros()等】【从现有数组生成:array、asarray】【生成随机数组:np.random】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

生成0和1的数组

  • np.ones()
  • np.ones_like()
  • 从现有数组中生成
    • np.array – 深拷贝
    • np.asarray – 浅拷贝

生成固定范围数组

  • np.linspace()
    • nun – 生成等间隔的多少个
  • np.arange()
    • step – 每间隔多少生成数据
  • np.logspace()
    • 生成以10的N次幂的数据

生成随机数组

  • 正态分布
    • 里面需要关注的参数:均值:u, 标准差:σ
      • u – 决定了这个图形的左右位置
      • σ – 决定了这个图形是瘦高还是矮胖
    • np.random.randn()
    • np.random.normal(0, 1, 100)
  • 均匀
    • np.random.rand()
    • np.random.uniform(0, 1, 100)
    • np.random.randint(0, 10, 10)

一、生成固定范围的数组

1、arange:等差数组

创建数组:arange(),类似range(),在给定间隔内返回均匀间隔的值。

创建等差数组 — 指定步长

np.arange(10, 50, 2)

返回结果:

array([10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42,44, 46, 48])

import numpy as np# 创建数组:arange(),类似range(),在给定间隔内返回均匀间隔的值。print(np.arange(10))  # 返回0-9,整型
print(np.arange(10.0))  # 返回0.0-9.0,浮点型
print(np.arange(5, 12))  # 返回5-11
print(np.arange(5.0, 12, 2))  # 返回5.0-12.0,步长为2
print(np.arange(10000))  # 如果数组太大而无法打印,NumPy会自动跳过数组的中心部分,并只打印边角:

打印结果:

[0 1 2 3 4 5 6 7 8 9]
[0. 1. 2. 3. 4. 5. 6. 7. 8. 9.]
[ 5  6  7  8  9 10 11]
[ 5.  7.  9. 11.]
[   0    1    2 ... 9997 9998 9999]Process finished with exit code 0

2、linspace:等差数组

linspace():返回在间隔[开始,停止]上计算的num个均匀间隔的样本。

numpy.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)

  • start:起始值,stop:结束值
  • num:生成样本数,默认为50
  • endpoint:如果为真,则停止是最后一个样本。否则,不包括在内。默认值为True。
  • retstep:如果为真,返回(样本,步长),其中步长是样本之间的间距 → 输出为一个包含2个元素的元祖,第一个元素为array,第二个为步长实际值
# 生成等间隔的数组
np.linspace(0, 100, 11) 

返回结果:

array([  0.,  10.,  20.,  30.,  40.,  50.,  60.,  70.,  80.,  90., 100.])

import numpy as np# 创建数组:linspace():返回在间隔[开始,停止]上计算的num个均匀间隔的样本。ar1 = np.linspace(2.0, 3.0, num=5)
ar2 = np.linspace(2.0, 3.0, num=5, endpoint=False)
ar3 = np.linspace(2.0, 3.0, num=5, retstep=True)
print(ar1, type(ar1))
print(ar2)
print(ar3, type(ar3))

打印结果:

[2.   2.25 2.5  2.75 3.  ] <class 'numpy.ndarray'>
[2.  2.2 2.4 2.6 2.8]
(array([2.  , 2.25, 2.5 , 2.75, 3.  ]), 0.25) <class 'tuple'>Process finished with exit code 0

3、logspace:等比数列

np.logspace(start,stop, num)

  • 创建等比数列

  • 参数:

    • num:要生成的等比数列数量,默认为50
# 生成10^x
np.logspace(0, 2, 3) 

返回结果:

array([  1.,  10., 100.])

三、生成0和1的数组

生成0和1的数组

  • np.ones(shape, dtype)
  • np.ones_like(a, dtype)
  • np.zeros(shape, dtype)
  • np.zeros_like(a, dtype)

1、ones()

ones = np.ones([4,8])
print(ones)

返回结果:

array([[1., 1., 1., 1., 1., 1., 1., 1.], [1., 1., 1., 1., 1., 1., 1., 1.],[1., 1., 1., 1., 1., 1., 1., 1.],[1., 1., 1., 1., 1., 1., 1., 1.]])

2、ones_like()

3、numpy.zeros()

numpy.zeros(shape, dtype=float, order=‘C’):返回给定形状和类型的新数组,用零填充。

  • shape:数组纬度,二维以上需要用(),且输入参数为整数
  • dtype:数据类型,默认numpy.float64
  • order:是否在存储器中以C或Fortran连续(按行或列方式)存储多维数据。

4、zeros_like()

返回具有与给定数组相同的形状和类型的零数组,这里ar4根据ar3的形状和dtype创建一个全0的数组

np.zeros_like(ones) 

返回结果:

array([[0., 0., 0., 0., 0., 0., 0., 0.], [0., 0., 0., 0., 0., 0., 0., 0.],[0., 0., 0., 0., 0., 0., 0., 0.], [0., 0., 0., 0., 0., 0., 0., 0.]])
import numpy as np# 创建数组:zeros()/zeros_like()/ones()/ones_like()# numpy.zeros(shape, dtype=float, order='C'):返回给定形状和类型的新数组,用零填充。
# shape:数组纬度,二维以上需要用(),且输入参数为整数
# dtype:数据类型,默认numpy.float64
# order:是否在存储器中以C或Fortran连续(按行或列方式)存储多维数据。
ar1 = np.zeros(5)
ar2 = np.zeros((2, 2), dtype=np.int)
print('ar1 = {0}, ar1.dtype = {1}'.format(ar1, ar1.dtype))
print('ar2 = {0}, ar2.dtype = {1}'.format(ar2, ar2.dtype))
print('-' * 50)# zeros_like(): 返回具有与给定数组相同的形状和类型的零数组,这里ar4根据ar3的形状和dtype创建一个全0的数组
ar3 = np.array([list(range(5)), list(range(5, 10))])
ar4 = np.zeros_like(ar3)
print('ar3 = ', ar3)
print('ar4 = ', ar4)
print('-' * 50)# ones()/ones_like()和zeros()/zeros_like()一样,只是填充为1
ar5 = np.ones(9)
ar6 = np.ones((2, 3, 4))
ar7 = np.ones_like(ar3)
print('ar5 = ', ar5)
print('ar6 = ', ar6)
print('ar7 = ', ar7)

打印结果:

ar1 = [0. 0. 0. 0. 0.], ar1.dtype = float64
ar2 = [[0 0][0 0]], ar2.dtype = int32
--------------------------------------------------
ar3 =  [[0 1 2 3 4][5 6 7 8 9]]
ar4 =  [[0 0 0 0 0][0 0 0 0 0]]
--------------------------------------------------
ar5 =  [1. 1. 1. 1. 1. 1. 1. 1. 1.]
ar6 =  [[[1. 1. 1. 1.][1. 1. 1. 1.][1. 1. 1. 1.]][[1. 1. 1. 1.][1. 1. 1. 1.][1. 1. 1. 1.]]]
ar7 =  [[1 1 1 1 1][1 1 1 1 1]]Process finished with exit code 0

四、从现有数组生成

array()函数,括号内可以是列表、元祖、数组、生成器等

  • np.array(object, dtype)

  • np.asarray(a, dtype)

a = np.array([[1,2,3],[4,5,6]])
# 从现有的数组当中创建,深拷贝 
a1 = np.array(a)
# 相当于索引的形式,并没有真正的创建一个新的,浅拷贝
a2 = np.asarray(a)
import numpy as np# 整型
ar1 = np.array(range(10))
# 浮点型
ar2 = np.array([1, 2, 3.14, 4, 5])
# 二维数组:嵌套序列(列表,元祖均可)
ar3 = np.array([[1, 2, 3], ('a', 'b', 'c')])  # 二维数组,共6个元素
# 注意嵌套序列数量不一会怎么样
ar4 = np.array([[1, 2, 3], ('a', 'b', 'c', 'd')])  # 一维数组,共2个元素print('ar1 = {0}, type(ar1) = {1}, ar1.dtype = {2}'.format(ar1, type(ar1), ar1.dtype))
print('ar2 = {0}, type(ar2) = {1}, ar2.dtype = {2}'.format(ar2, type(ar2), ar2.dtype))
print('ar3 = {0}, ar3.shape = {1}, ar3.ndim = {2}, ar3.size = {3}'.format(ar3, ar3.shape, ar3.ndim, ar3.size))
print('ar4 = {0}, ar4.shape = {1}, ar4.ndim = {2}, ar4.size = {3}'.format(ar4, ar4.shape, ar4.ndim, ar4.size))

打印结果:

main.py:10: VisibleDeprecationWarning: Creating an ndarray from ragged nested sequences (which is a list-or-tuple of lists-or-tuples-or ndarrays with different lengths or shapes) is deprecated. If you meant to do this, you must specify 'dtype=object' when creating the ndarrayar4 = np.array([[1, 2, 3], ('a', 'b', 'c', 'd')])  # 一维数组,共2个元素
ar1 = [0 1 2 3 4 5 6 7 8 9], type(ar1) = <class 'numpy.ndarray'>, ar1.dtype = int32
ar2 = [1.   2.   3.14 4.   5.  ], type(ar2) = <class 'numpy.ndarray'>, ar2.dtype = float64
ar3 = [['1' '2' '3']['a' 'b' 'c']], ar3.shape = (2, 3), ar3.ndim = 2, ar3.size = 6
ar4 = [list([1, 2, 3]) ('a', 'b', 'c', 'd')], ar4.shape = (2,), ar4.ndim = 1, ar4.size = 2Process finished with exit code 0 
"""
创建多维数组(二维数组):arange(n)只能创建 0 ~ n-1 数组,只能是整数,如果需要元素是其他类型(例如:str等)无法满足
array() 创建数组元素没有类型限制
二维数组,一定是数组嵌套数组
默认元素是字符串
"""from numpy import *m1 = array([arange(3), arange(3), arange(3)])
print('m1 = ', m1)m2 = array([["a", "b", 4],[1, 2, 3],[2.3, "2.4", 90]])
print('m2 = ', m2)
print('m2.shape = ', m2.shape)  # 输出元组,第一个为行,第二个元素为列
print("{}是{}维数组".format("m2", len(m2.shape)))

打印结果:

m1 =  [[0 1 2][0 1 2][0 1 2]]
m2 =  [['a' 'b' '4']['1' '2' '3']['2.3' '2.4' '90']]
m2.shape =  (3, 3)
m2是2维数组Process finished with exit code 0

关于array和asarray的不同

在这里插入图片描述

五、生成随机数组:np.random 模块

numpy.random包含多种概率分布的随机样本,是数据分析辅助的重点工具之一

函数名使用作用
seed()np.random.seed(n)随机种子生成器,使得用numpy各种函数生成的随机数为由种子数决定的“特定”的随机数,如果seed中参数为空,则生成的随机数“完全”随机(比如:指定n=1,则下一次生成的随机数与 1 相关,并不是完全随机)
random()np.random.random((1000,20))生成1000个随机浮点数,从0-20中随机
rand()np.random.rand(d0,d1,…,dn)生成一个[0,1)之间的随机浮点数或N维浮点数组
randn()np.random.randn(d0,d1,…,dn)生成一个浮点数或N维浮点数组,取数范围:正态分布的随机样本数
randint()np.random.randint(low,high=None,size=None,dtype=‘1’)生成一个整数或N维整数数组,取数范围:若high不为None时,取[low,high)之间的随机整数;否则取[0,low)之间的随机整数
normal()np.random.normal(size=None)生成一个浮点数或N维浮点数组,取数范围:正态分布的随机样本
standard_normal()np.random.standard_normal(size=None)生成一个浮点数或N维浮点数组,取数范围:标准正态分布的随机样本
random_integers()np.random.random_integers(low,high=None,size=None)生成一个整数或N维整数数组,取数范围:若high不为None时,取[low,high]之间的随机整数;否则取[1,low]之间的随机整数
random_sample()np.random.random_sample(size=None)生成一个[0,1)之间随机浮点数或N维浮点数组
choice()np.random.choice(a,size=None,replace=True,p=None)从序列中获取元素,若a为整数,元素取值为np.range(a)中随机数;若a为数组,取值为a数组元素中随机元素
shuffle()np.random.shuffle(X)对X进行重排序,若X为多维数组,只沿第一条轴洗牌,输出为None
permutation()np.random.permutation(X)与np.random.shuffle(X)功能相同,两者区别:permutation(X)不会修改X的顺序
uniform()np.random.uniform(low=0.0, high=1.0, size=None)从一个均匀分布[low,high)中随机采样,注意定义域是左闭右开,即包含low,不包含high

1、正态分布概念

什么是正态分布:正态分布是一种概率分布。正态分布是具有两个参数μ和σ的连续型随机变量的分布,第一参数μ是服从正态分布的随机变量的均值,第二个参数σ是此随机变量的标准差,所以正态分布记作N(μ,σ )

在这里插入图片描述

正态分布的应用:生活、生产与科学实验中很多随机变量的概率分布都可以近似地用正态分布来描述。

正态分布特点μ决定了其位置,其标准差σ:决定了分布的幅度。当μ = 0,σ = 1时的正态分布是标准正态分布。

  • 方差:是在概率论和统计方差衡量一组数据时离散程度的度量
    在这里插入图片描述
    其中M为平均值,n为数据总个数,σ 为标准差,σ ^2​可以理解一个整体为方差

在这里插入图片描述

  • 标准差与方差的意义:可以理解成数据的一个离散程度的衡量
    在这里插入图片描述

2、正态分布创建方式

2.1 np.random.randn(d0, d1, …, dn)

numpy.random.randn(d0, d1, …, dn):生成一个浮点数或N维浮点数组 —— 正态分布

  • 功能:从标准正态分布中返回一个或多个样本值
  • 其中:d0,d1,dn表示需要在哪些维度生成数据
import numpy as np#  numpy.random.randn(d0, d1, ..., dn):生成一个浮点数或N维浮点数组 —— 正态分布import matplotlib.pyplot as plt  # 导入matplotlib模块,用于图表辅助分析# randn和rand的参数用法一样
# 生成1000个正太的样本值
samples1 = np.random.randn(1000)
samples2 = np.random.randn(1000)plt.scatter(samples1, samples2)
plt.show()

在这里插入图片描述

2.2 np.random.normal(loc=0.0, scale=1.0, size=None)

loc:float

  • 此概率分布的均值(对应着整个分布的中心centre)

scale:float

  • 此概率分布的标准差(对应于分布的宽度,scale越大越矮胖,scale越小,越瘦高)

size:int or tuple of ints

  • 输出的shape,默认为None,只输出一个值
import numpy as np# 随机数生成
# 生成一个标准正太分布的4*4样本值samples = np.random.normal(size=(4, 4))
print('samples = ', samples)

打印结果:

samples =  [[-0.86201186  1.48464075  0.4467651   0.14612261][ 0.75834339 -0.49389563 -2.12561416 -0.47585096][-1.36229232  1.51312111 -0.6907586  -0.02197911][ 0.89089281  0.45599011 -0.06165468 -0.46591592]]

举例1:生成均值为1.75,标准差为1的正态分布数据,100000000个:

x1 = np.random.normal(1.75, 1, 100000000) 

返回结果:

array([2.90646763, 1.46737886, 2.21799024, ..., 1.56047411, 1.87969135,  0.9028096 ])
import numpy as np
import matplotlib.pyplot as plt# 生成均匀分布的随机数
x1 = np.random.normal(1.75, 1, 100000000)# 画图看分布状况
# 1)创建画布
plt.figure(figsize=(20, 10), dpi=100)# 2)绘制直方图
plt.hist(x=x1, bins=1000)  # x代表要使用的数据,bins表示要划分区间数
# 3)显示图像
plt.show()

在这里插入图片描述
举例2:随机生成4支股票1周的交易日涨幅数据(模拟生成一组股票的涨跌幅的数据):

4支股票,一周(5天)的涨跌幅数据,如何获取?:随机生成涨跌幅在某个正态分布内,比如均值0,方差1

# 股票涨跌幅数据的创建
# 创建符合正态分布的4只股票5天的涨跌幅数据
stock_change = np.random.normal(0, 1, (4, 5))
stock_change 

返回结果:

array([[ 0.0476585 ,  0.32421568,  1.50062162,  0.48230497, -0.59998822], [-1.92160851,  2.20430374, -0.56996263, -1.44236548,  0.0165062 ],[-0.55710486, -0.18726488, -0.39972172,  0.08580347, -1.82842225],[-1.22384505, -0.33199305,  0.23308845, -1.20473702, -0.31753223]])

2.3 np.random.standard_normal(size=None)

  • 返回指定形状的标准正态分布的数组。

3、均匀分布

3.1 np.random.rand(d0, d1, …, dn)

numpy.random.rand(d0, d1, …, dn):生成一个[0,1)之间的随机浮点数或N维浮点数组 —— 均匀分布

返回[0.0,1.0)内的一组均匀分布的数。

import numpy as np# numpy.random.rand(d0, d1, ..., dn):生成一个[0,1)之间的随机浮点数或N维浮点数组 —— 均匀分布import matplotlib.pyplot as plt  # 导入matplotlib模块,用于图表辅助分析a = np.random.rand()
print('a = {0}, type(a) = {1}'.format(a, type(a)))  # 生成一个随机浮点数b = np.random.rand(4)
print('\nb = {0}, type(b) = {1}'.format(b, type(b)))  # 生成形状为4的一维数组c = np.random.rand(2, 3)
print('\nc = {0}, type(c) = {1}'.format(c, type(c)))  # 生成形状为2*3的二维数组,注意这里不是((2,3))samples1 = np.random.rand(1000)
samples2 = np.random.rand(1000)# 生成1000个均匀分布的样本值
plt.scatter(samples1, samples2)
plt.show()

在这里插入图片描述

打印结果:

a = 0.3897322462249715, type(a) = <class 'float'>b = [0.54630163 0.48370642 0.46426945 0.49665149], type(b) = <class 'numpy.ndarray'>c = [[0.86019548 0.22935929 0.53218719][0.99057595 0.42980103 0.34768713]], type(c) = <class 'numpy.ndarray'>Process finished with exit code 0

3.2 np.random.uniform(low=0.0, high=1.0, size=None)

功能:从一个均匀分布[low,high)中随机采样,注意定义域是左闭右开,即包含low,不包含high.

  • low: 采样下界,float类型,默认值为0;
  • high: 采样上界,float类型,默认值为1;
  • size: 输出样本数目,为int或元组(tuple)类型,例如,size=(m,n,k), 则输出mnk个样本,缺省时输出1个值。
  • 返回值:ndarray类型,其形状和参数size中描述一致。

3.3 np.random.randint(low, high=None, size=None, dtype=‘l’)

从一个均匀分布中随机采样,生成一个整数或N维整数数组,
取数范围:若high不为None时,取[low,high)之间随机整数,否则取值[0,low)之间随机整数。

# 生成均匀分布的随机数
x2 = np.random.uniform(-1, 1, 100000000) 

返回结果:

array([ 0.22411206,  0.31414671,  0.85655613, ..., -0.92972446, 0.95985223,  0.23197723])

画图看分布状况:

import matplotlib.pyplot as plt# 生成均匀分布的随机数
x2 = np.random.uniform(-1, 1, 100000000)# 画图看分布状况
# 1)创建画布
plt.figure(figsize=(10, 10), dpi=100)# 2)绘制直方图
plt.hist(x=x2, bins=1000)  # x代表要使用的数据,bins表示要划分区间数# 3)显示图像
plt.show()

在这里插入图片描述

4、生成一个整数或N维整数数组:numpy.random.randint(low, high=None, size=None, dtype=‘l’)

import numpy as np# numpy.random.randint(low, high=None, size=None, dtype='l'):生成一个整数或N维整数数组
# 若high不为None时,取[low,high)之间随机整数,否则取值[0,low)之间随机整数,且high必须大于low
# dtype参数:只能是int类型# low=2:生成1个[0,2)之间随机整数
print('np.random.randint(2) = ', np.random.randint(2))# low=2,size=5 :生成5个[0,2)之间随机整数
print('\nnp.random.randint(2, size=5) = ', np.random.randint(2, size=5))# low=2,high=6,size=5:生成5个[2,6)之间随机整数
print('\nnp.random.randint(2, 6, size=5) = ', np.random.randint(2, 6, size=5))# low=2,size=(2,3):生成一个2x3整数数组,取数范围:[0,2)随机整数
print('\nnp.random.randint(2, size=(2, 3)) = ', np.random.randint(2, size=(2, 3)))# low=2,high=6,size=(2,3):生成一个2*3整数数组,取值范围:[2,6)随机整数
print('\nnp.random.randint(2, 6, (2, 3)) = ', np.random.randint(2, 6, (2, 3)))

打印结果:

np.random.randint(2) =  0np.random.randint(2, size=5) =  [1 1 1 1 1]np.random.randint(2, 6, size=5) =  [4 2 5 4 4]np.random.randint(2, size=(2, 3)) =  [[0 0 1][0 1 1]]np.random.randint(2, 6, (2, 3)) =  [[3 3 4][5 3 3]]Process finished with exit code 0

五、eye()

eye():创建一个正方的N*N的单位矩阵,对角线值为1,其余为0

import numpy as npprint(np.eye(5))

打印结果:

[[1. 0. 0. 0. 0.][0. 1. 0. 0. 0.][0. 0. 1. 0. 0.][0. 0. 0. 1. 0.][0. 0. 0. 0. 1.]]Process finished with exit code 0

这篇关于NumPy(二):创建数组【生成固定范围的数组:arange、linspace】【生成0和1的数组:zeros()等】【从现有数组生成:array、asarray】【生成随机数组:np.random】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1128696

相关文章

AI一键生成 PPT

AI一键生成 PPT 操作步骤 作为一名打工人,是不是经常需要制作各种PPT来分享我的生活和想法。但是,你们知道,有时候灵感来了,时间却不够用了!😩直到我发现了Kimi AI——一个能够自动生成PPT的神奇助手!🌟 什么是Kimi? 一款月之暗面科技有限公司开发的AI办公工具,帮助用户快速生成高质量的演示文稿。 无论你是职场人士、学生还是教师,Kimi都能够为你的办公文

hdu2241(二分+合并数组)

题意:判断是否存在a+b+c = x,a,b,c分别属于集合A,B,C 如果用暴力会超时,所以这里用到了数组合并,将b,c数组合并成d,d数组存的是b,c数组元素的和,然后对d数组进行二分就可以了 代码如下(附注释): #include<iostream>#include<algorithm>#include<cstring>#include<stack>#include<que

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

pdfmake生成pdf的使用

实际项目中有时会有根据填写的表单数据或者其他格式的数据,将数据自动填充到pdf文件中根据固定模板生成pdf文件的需求 文章目录 利用pdfmake生成pdf文件1.下载安装pdfmake第三方包2.封装生成pdf文件的共用配置3.生成pdf文件的文件模板内容4.调用方法生成pdf 利用pdfmake生成pdf文件 1.下载安装pdfmake第三方包 npm i pdfma

poj 1258 Agri-Net(最小生成树模板代码)

感觉用这题来当模板更适合。 题意就是给你邻接矩阵求最小生成树啦。~ prim代码:效率很高。172k...0ms。 #include<stdio.h>#include<algorithm>using namespace std;const int MaxN = 101;const int INF = 0x3f3f3f3f;int g[MaxN][MaxN];int n

poj 1287 Networking(prim or kruscal最小生成树)

题意给你点与点间距离,求最小生成树。 注意点是,两点之间可能有不同的路,输入的时候选择最小的,和之前有道最短路WA的题目类似。 prim代码: #include<stdio.h>const int MaxN = 51;const int INF = 0x3f3f3f3f;int g[MaxN][MaxN];int P;int prim(){bool vis[MaxN];

poj 2349 Arctic Network uva 10369(prim or kruscal最小生成树)

题目很麻烦,因为不熟悉最小生成树的算法调试了好久。 感觉网上的题目解释都没说得很清楚,不适合新手。自己写一个。 题意:给你点的坐标,然后两点间可以有两种方式来通信:第一种是卫星通信,第二种是无线电通信。 卫星通信:任何两个有卫星频道的点间都可以直接建立连接,与点间的距离无关; 无线电通信:两个点之间的距离不能超过D,无线电收发器的功率越大,D越大,越昂贵。 计算无线电收发器D

在cscode中通过maven创建java项目

在cscode中创建java项目 可以通过博客完成maven的导入 建立maven项目 使用快捷键 Ctrl + Shift + P 建立一个 Maven 项目 1 Ctrl + Shift + P 打开输入框2 输入 "> java create"3 选择 maven4 选择 No Archetype5 输入 域名6 输入项目名称7 建立一个文件目录存放项目,文件名一般为项目名8 确定

hdu 1166 敌兵布阵(树状数组 or 线段树)

题意是求一个线段的和,在线段上可以进行加减的修改。 树状数组的模板题。 代码: #include <stdio.h>#include <string.h>const int maxn = 50000 + 1;int c[maxn];int n;int lowbit(int x){return x & -x;}void add(int x, int num){while

hdu 1102 uva 10397(最小生成树prim)

hdu 1102: 题意: 给一个邻接矩阵,给一些村庄间已经修的路,问最小生成树。 解析: 把已经修的路的权值改为0,套个prim()。 注意prim 最外层循坏为n-1。 代码: #include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#include <cstri