numpy代码积累!

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

在指定的间隔内返回均匀间隔的数字。

spacing = np.linspace(0, len(filenames), FLAGS.num_threads + 1).astype(np.int)  # 多线程操作,分配文件为两份,参数(从谁到谁得到多少个东西,as什么数据类型)

https://blog.csdn.net/weixin_41042404/article/details/81913901


np.arange函数

返回值: np.arange()函数返回一个有终点和起点的固定步长的排列,如[1,2,3,4,5],起点是1,终点是5,步长为1。
参数个数情况: np.arange()函数分为一个参数,两个参数,三个参数三种情况
1)一个参数时,参数值为终点,起点取默认值0,步长取默认值1。
2)两个参数时,第一个参数为起点,第二个参数为终点,步长取默认值1。
3)三个参数时,第一个参数为起点,第二个参数为终点,第三个参数为步长。其中步长支持小数。

例子:

#一个参数 默认起点0,步长为1 输出:[0 1 2]
a = np.arange(3)

#两个参数 默认步长为1 输出[3 4 5 6 7 8]
a = np.arange(3,9)

#三个参数 起点为0,终点为4,步长为0.1 输出[ 0.   0.1  0.2  0.3  0.4  0.5  0.6  0.7  0.8  0.9  1.   1.1  1.2  1.3  1.4 1.5  1.6  1.7  1.8  1.9  2.   2.1  2.2  2.3  2.4  2.5  2.6  2.7  2.8  2.9]
a = np.arange(0, 3, 0.1)

numpy中有一些常用的用来产生随机数的函数,randn()和rand()就属于这其中。

numpy.random.randn(d0, d1, …, dn)是从标准正态分布中返回一个或多个样本值。

numpy.random.rand(d0, d1, …, dn)的随机样本位于[0, 1)中。


np.reshape(inputs, (1, self.image_size, self.image_size, 3))

ndarray可以维度变化,三维到四维


np.nonzero(a)函数:

numpy中用于得到数组array中非零元素的位置(数组索引)的函数.

返回数组a中非零元素的索引值数组。

(1)只有a中非零元素才会有索引值,那些零值元素没有索引值;
(2)返回的索引值数组是一个多维tuple数组,该tuple数组中包含一维的array数组。其中,多维array向量的个数与a的维数是一致的。
(3)索引值数组的每一个array均是从一个维度上来描述其索引值。比如,如果a是一个二维数组,则索引值数组有两个array,第一个array从行维度来描述索引值;第二个array从列维度来描述索引值。


np.fromfile(frame, dtype=float, count=‐1, sep=’’)
frame : 文件、字符串
dtype : 读取的数据类型 。可以发现,我们读取数据的时候都需要指定数据类型,无论是不是一维二维。默认为浮点型
count : 读入元素个数, ‐1表示读入整个文件
sep : 数据分割字符串,如果是空串,写入文件为二进制(分割不同的数据的字符)

我建议看下面的链接吧!!!

numpy中文件的存储和读取-嵩天老师笔记:
np.savetxt np.loadtxt a.tofile np.fromfile np.save np.load

self.header = np.fromfile(fp, count=3, dtype=np.int32).tolist()

你看,.tolist() 将 nadrry 变为 list

对numpy数组和矩阵,可以使用两个数组作为地址,他们一一对应是为一组

数组包含:ndarry,list,tuple

比如:
a =
[[ 1 2 3]
[ 4 5 6]
[ 8 9 10]]

使用:
np.arange(3) = [0 1 2]
b = np.array([0,2,1]) 或 b = [0,2,1] 或 b = (0,1,2)
a = a[np.arange(3), b] = [1 6 9]

import numpy as np

a = np.array([[1,2,3], [4,5,6], [8,9,10]])  # 2x3
print(a, '\n')

print(np.arange(3), '\n')   # [0 1 2]

b = np.array([0,2,1])  # [0 2 1]
# 或列表b = [0, 2, 1] -----> [0, 2, 1]    , 其实只要是数组(元祖)就行
print(b, '\n')

a = a[np.arange(3), b]
print(a)
结果:
a = 
[[ 1  2  3]
 [ 4  5  6]
 [ 8  9 10]] 

b =
[0 1 2] 

np.arange(3)=
[0 2 1] 

a[[0 2 1], [0 1 2]]=
[1 6 9]

(0,0)  ,  (2,1)  , (1,2)

keep_index = scores > 0.5 # 返回True , False 数组

scores的值,按照阈值0.5进行判断

keep_index =
[False False False False False False False False False False False False
False False False False False False False False False False False False
False False False False False False False False False False False False
False False False False False False ]

然后 scores = scores[keep_index] ,进行值筛选,scores[False]删除,
其余保持原值。这种操作的结果,改变数组scores的size。

注:numpy数组可以直接排序:
只需要在数组地址输入元素个数的地址:0 - N , 并且按照需要的顺序列表、ndarry排列即可:
'''
scores      =                [0.70577043 0.8091017  0.85050225 0.7555623  0.7963754  0.53142613] ndarry
scores[[2, 1, 4, 3, 0, 5]] = [0.85050225 0.8091017  0.7963754  0.7555623  0.70577043 0.53142613] ndarry

index = np.argsort(-scores)  # 从大到小排列ndarry,返回索引值[2 1 4 3 0 5]
scores = scores[index]  # 效果相同
'''

np.floor 返回不大于输入参数的最大整数


numpy中矩阵乘法,星乘(*)和点乘(.dot)的区别

总结:

星乘表示矩阵内各对应位置相乘,矩阵a*b=矩阵a下标(0,0) x 矩阵b下标(0,0),其他位置相同

点乘表示求矩阵内积,二维数组称为矩阵积(mastrix product)。

用文字表述:

所得到的数组中的每个元素为,第一个矩阵中与该元素行号相同的元素与第二个矩阵与该元素列号相同的元素,两两相乘后再求和。

文字难以理解,直接上图:
在这里插入图片描述
综上所述,二维矩阵a*b下标(0,1)=矩阵a下标(0,) x 矩阵b下标(,1)

点积,比如np.dot([1,2,3],[4,5,6]) = 14 + 25 + 3*6 = 32


np.log:

------:1以10为底:

import numpy as np
np.log10(x)

>>> np.log10(100)
2.0
>>>

------:e为底

log下什么都不写默认是自然对数
>>> np.log(np.e)
1.0
>>> np.log(10)
2.3025850929940459


13

numpy.meshgrid函数使用解释

如: 向量X,Y
X=[1 2]
Y=[3 4 5]

xx, yy = np.meshgrid(X, Y)

xx=
[[1 2]
[1 2]
[1 2]]

yy=
[[3 3]
[4 4]
[5 5]]

X,Y都对一个维度进行复制,最后生成两个0,1维度相同的矩阵!!!
https://blog.csdn.net/somilong/article/details/78952586

=========================================================================================================

np.unique( )的用法

在这里插入图片描述
该函数是去除数组中的重复数字,并进行排序之后输出。


ndarray.mean( axis=0 ) 求平均值

    a = np.array([[1,2,3,4],
                  [5,6,7,8]])
    a.mean()#4.5
    a.mean(axis=0) #[ 3.  4.  5.  6.]
    a.mean(axis=1) #[ 2.5  6.5]

那么三维怎么求呢?
格式 <class ‘tuple’>: (432, 576, 3)
ndarry.mean(axis=(0, 1) 对0,1维一起求均值
最后shape为:<class ‘tuple’>: (3,) 第三维没有动,得到三个通道的均值
推荐阅读


np.ceil(ndarray)
计算大于等于改值的最小整数

a = np.array([-1.7, -1.5, -0.2, 0.2, 1.5, 1.7, 2.0])
np.ceil(a)
array([-1., -1., -0.,  1.,  2.,  2.,  2.])

np.ceil(a) np.floor(a) : 计算各元素的ceiling 值, floor值
(ceiling向上取整,floor向下取整)


numpy().squeeze() # 从数组的形状中删除单维条目,即把shape中为1的维度去掉


numpy求最大值索引

import numpy as np
a = np.array([[1, 5, 5, 2],
              [9, 6, 2, 8],
              [3, 17, 9, 1]])

print(a.argmax())  # print(np.argmax(a))   没有指明轴,行优先flatten以后寻找最大值索引

>>>9

print(a.argmax(axis=0))  # print(np.argmax(a, axis=0))  每列的最大值行索引
>>>[1, 2, 1, 1]

如果需要二维的最大值索引坐标,结合np.unravel_index!
np.unravel_index(indices, dims)  功能:返回indices中的元素在维度为dims的数组中的索引值,默认按元组的形式返回。

max_x, max_y = np.unravel_index(a.argmax(), a.shape)
print(max_x, max_y, a.shape)
>>> 2 1 (3, 4)

numpy的ones_like函数返回一个用1填充的跟输入 形状和类型 一致的数组。


insert()、 delete()、append()函数的用法
https://blog.csdn.net/u011851421/article/details/83786111
np.insert(all_idx, 0, idx, 0) # 两个0分别代表 插入在第几行/列之前,插入某一行(0)还是列(1) , 先看后面:插在行,0行以前


outer,dot


np.genfromtxt(gt_file, delimiter=’,’)
gt_file路径, 直接将groundtruth_rect.txtgroundtruth_rect.txt 读取成NX4的ndary

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值