【python】numpy的ones函数返回的是什么类型?似乎不是列表?ones()函数用以创建指定形状和类型的数组python函数ones,默认情况下返回的类型是float64 。但是 , 如果使用ones()函数时指定python函数ones了数据类型 , 那么返回的就是该类型 。
参考NumPy v1.11官方手册中对ones()函数的描述:
numpy.ones(shape, dtype=None, order='C')
其中:
shape : 数组的形状,例如 (2, 3) 或 2.
dtype : 数组的数据类型 , 默认为numpy.float64.
order : 数组元素在内存中的排列方式,默认 'C’表示C语言排列方式,或者‘F’表示 Fortran 语言排列方式.
具体举例如下:
如果不指定数据类型,则默认返回float64
In [1]: import numpy as np
In [2]: a=np.ones(3)
In [3]: print a.dtype
float64
如果指定了数据类型,那么返回指定的类型
In [1]: import numpy as np
In [2]: a = np.ones(3,np.int) # 此处指定ones()创建的数据类型为int32
In [3]: print a.dtype
int32
python polyfit函数怎么使用用polyfit(X,Y,1)得到python函数ones的拟合函数只能得到a,bpython函数ones,但不能得到线性相关系数R^2 。如想要得到其线性相关系数,可以用regress(y,X),其使用格式
[b,bint,r,rint,stats]
=
regress(y,X);
b——拟合系数
bint——b的置信区间
r——残差值
rint——r的置信区间
stats——检验统计量,第一个就是相关系数
例如:
x=[ 。。。];y=[ 。。。]
X=[x
ones(n,1)];
%x的行数(列数)
[b,bint,r,rint,stats]
=
regress(y,X);
numpy基础——ndarray对象 numpy 是使用python进行数据分析不可或缺的第三方库,非常多的科学计算工具都是基于 numpy 进行开发的 。
ndarray对象是用于存放同类型元素的多维数组 , 是numpy中的基本对象之一,另一个是func对象 。本文主要内容是: 1 、简单介绍ndarray对象 ; 2、ndarray对象的常用属性 ; 3、如何创建ndarray对象 ; 4、ndarray元素访问。
它的维度以及个维度上的元素个数由 shape 决定 。
标题中的函数就是numpy的构造函数,我们可以使用这个函数创建一个ndarray对象 。构造函数有如下几个可选参数:
实例:
接下来介绍ndarray对象最常用的属性
实例:
使用 array 函数,从常规的python列表或者元组中创建数组,元素的类型由原序列中的元素类型确定 。
实例:
subok 为 True ,并且object是ndarray子类时(比如矩阵类型),返回的数组保留子类类型
某些时候,我们在创建数组之前已经确定了数组的维度以及各维度的长度 。这时我们就可以使用numpy内建的一些函数来创建ndarray 。
例如:函数 ones 创建一个全1的数组、函数 zeros 创建一个全0的数组、函数 empty 创建一个内容随机的数组,在默认情况下,用这些函数创建的数组的类型都是float64,若需要指定数据类型 , 只需要闲置 dtype 参数即可:
上述三个函数还有三个从已知的数组中,创建 shape 相同的多维数组: ones_like 、 zeros_like 、 empty_like , 用法如下:
除了上述几个用于创建数组的函数,还有如下几个特殊的函数:
特别地,eye 函数的全1的对角线位置有参数k确定
用法如下:
除了上面两个函数还有其他几个类似的从外部获取数据并创建ndarray,比如: frombuffer 、 fromfile 、 fromiter ,还没用过,等用到了在详细记录
ndarray提供了一些创建二维数组的特殊函数 。numpy中matrix是对二维数组ndarray进行了封装之后的子类 。这里介绍的关于二维数组的创建 , 返回的依旧是一个ndarray对象,而不是matrix子类 。关于matrix的创建和操作,待后续笔记详细描述 。为了表述方便,下面依旧使用 矩阵 这一次来表示创建的二维数组 。
对于一维的ndarray可以使用python访问内置list的方式进行访问:整数索引、切片、迭代等方式
关于ndarray切片
与内置list切片类似,形式:
array[beg:end:step]
beg: 开始索引
end: 结束索引(不包含这个元素)
step: 间隔
需要注意的是 :
特别注意的是,ndarray中的切片返回的数组中的元素是原数组元素的索引,对返回数组元素进行修改会影响原数组的值
除了上述与list相似的访问元素的方式,ndarray有一种通过 列表 来指定要从ndarray中获取元素的索引,例如:
多维ndarray中,每一维都叫一个轴axis 。在ndarray中轴axis是非常重要的 , 有很多对于ndarray对象的运算都是基于axis进行,比如sum、mean等都会有一个axis参数(针对对这个轴axis进行某些运算操作),后续将会详细介绍 。
对于多维数组 , 因为每一个轴都有一个索引,所以这些索引由逗号进行分割 , 例如:
需要注意的是 :
多维数组的迭代
可以使用ndarray的 flat 属性迭代数组中每一个元素
python中向量指的是什么意思一、向量是什么
在数学中python函数ones,向量(也称为欧几里得向量、几何向量、矢量) , 指具有大?。╩agnitude)和方向的量 。它可以形象化地表示为带箭头的线段 。箭头所指python函数ones:代表向量的方向python函数ones;线段长度:代表向量的大小 。与向量对应的只有大小 , 没有方向的量叫做数量(物理学中称标量)
在这里,向量即一维数组,用 arange 函数创建向量是最简单的方式之一:
arange函数也可以指定初始值、终止值和步长来创建一维数组:
向量还能直接对每个元素进行运算:
二、创建向量
上面使用 arange 则是创建向量的一种方式 , 其实只要是数组创建的函数均可以创建向量,如:
linspace() 函数
前文介绍:linspace 通过制定初始值、终止值和元素个数创建等差数列向量,通过endpoint 参数指定是否包含终止值 , 默认为True
logspace() 函数
同linspace , 创建等比数列,基数通过base参数指定,默认基数为10
zeros() 函数和 ones() 函数
这两个函数分别可以创建指定长度或形状的全0或全1的 ndarray 数组,比如:
指定数据类型:
empty() 函数
这个函数可以创建一个没有任何具体值的 ndarray 数组,例如:
random.randn() 函数
randn 是 numpy.random 中生成正态分布随机数据的函数
fromstring() 函数
从字符串创建数组
上面从字符串创建的数组,定义为整形8bit,创建出来的其实就是字符串的ASCII 码
fromfunction() 函数
从函数创建数组,是数据分析常见的方法
可先定义一个从下标计算数值的函数 , 然后用fromfunction 创建数组
fromfunction 第一个参数为计算每个数组元素的函数名 , 第二个参数指定数组的形状 。因为它支持多维数组 , 所以第二个参数必须是一个序列 。
例如python函数ones我创建一个九九乘法表:
注意,fromfunction 函数中的第二个参数指定的是数组的下标 , 下标作为实参通过遍历的方式传递给函数的形参 。
众多python培训视频,尽在python学习网,欢迎在线学习!
python数据分析与应用第三章代码3-5的数据哪来的savetxt
import numpy as np
i2 = np.eye(2)
np.savetxt("eye.txt", i2)
3.4 读入CSV文件
# AAPL,28-01-2011, ,344.17,344.4,333.53,336.1,21144800
c,v=np.loadtxt('data.csv', delimiter=',', usecols=(6,7), unpack=True) #index从0开始
3.6.1 算术平均值
np.mean(c) = np.average(c)
3.6.2 加权平均值
t = np.arange(len(c))
np.average(c, weights=t)
3.8 极值
np.min(c)
np.max(c)
np.ptp(c) 最大值与最小值的差值
3.10 统计分析
np.median(c) 中位数
np.msort(c) 升序排序
np.var(c) 方差
3.12 分析股票收益率
np.diff(c) 可以返回一个由相邻数组元素的差
值构成的数组
returns = np.diff( arr ) / arr[ : -1] #diff返回的数组比收盘价数组少一个元素
np.std(c) 标准差
对数收益率
logreturns = np.diff( np.log(c) ) #应检查输入数组以确保其不含有零和负数
where 可以根据指定的条件返回所有满足条件的数
组元素的索引值 。
posretindices = np.where(returns0)
np.sqrt(1./252.) 平方根 , 浮点数
3.14 分析日期数据
# AAPL,28-01-2011, ,344.17,344.4,333.53,336.1,21144800
dates, close=np.loadtxt('data.csv', delimiter=',', usecols=(1,6), converters={1:datestr2num}, unpack=True)
print "Dates =", dates
def datestr2num(s):
return datetime.datetime.strptime(s, "%d-%m-%Y").date().weekday()
# 星期一 0
# 星期二 1
# 星期三 2
# 星期四 3
# 星期五 4
# 星期六 5
# 星期日 6
#output
Dates = [ 4. 0. 1. 2. 3. 4. 0. 1. 2. 3. 4. 0. 1. 2. 3. 4. 1. 2. 4. 0. 1. 2. 3. 4. 0.
1. 2. 3. 4.]
averages = np.zeros(5)
for i in range(5):
indices = np.where(dates == i)
prices = np.take(close, indices) #按数组的元素运算,产生一个数组作为输出 。
a = [4, 3, 5, 7, 6, 8]
indices = [0, 1, 4]
np.take(a, indices)
array([4, 3, 6])
np.argmax(c) #返回的是数组中最大元素的索引值
np.argmin(c)
3.16 汇总数据
# AAPL,28-01-2011, ,344.17,344.4,333.53,336.1,21144800
#得到第一个星期一和最后一个星期五
first_monday = np.ravel(np.where(dates == 0))[0]
last_friday = np.ravel(np.where(dates == 4))[-1]
#创建一个数组,用于存储三周内每一天的索引值
weeks_indices = np.arange(first_monday, last_friday1)
#按照每个子数组5个元素,用split函数切分数组
weeks_indices = np.split(weeks_indices, 5)
#output
[array([1, 2, 3, 4, 5]), array([ 6, 7, 8, 9, 10]), array([11,12, 13, 14, 15])]
weeksummary = np.apply_along_axis(summarize, 1, weeks_indices,open, high, low, close)
def summarize(a, o, h, l, c): #open, high, low, close
monday_open = o[a[0]]
week_high = np.max( np.take(h, a) )
week_low = np.min( np.take(l, a) )
friday_close = c[a[-1]]
return("APPL", monday_open, week_high, week_low, friday_close)
np.savetxt("weeksummary.csv", weeksummary, delimiter=",", fmt="%s") #指定了文件名、需要保存的数组名、分隔符(在这个例子中为英文标点逗号)以及存储浮点数的格式 。
0818b9ca8b590ca3270a3433284dd417.png
格式字符串以一个百分号开始 。接下来是一个可选的标志字符:-表示结果左对齐 , 0表示左端补0,表示输出符号(正号 或负号-) 。第三部分为可选的输出宽度参数,表示输出的最小位数 。第四部分是精度格式符,以”.”开头,后面跟一个表示精度的整数 。最后是一个类型指定字符 , 在例子中指定为字符串类型 。
numpy.apply_along_axis(func1d, axis, arr, *args, **kwargs)
def my_func(a):
... """Average first and last element of a 1-D array"""
... return (a[0]a[-1]) * 0.5
b = np.array([[1,2,3], [4,5,6], [7,8,9]])
np.apply_along_axis(my_func, 0, b) #沿着X轴运动,取列切片
array([ 4., 5., 6.])
np.apply_along_axis(my_func, 1, b) #沿着y轴运动,取行切片
array([ 2., 5., 8.])
b = np.array([[8,1,7], [4,3,9], [5,2,6]])
np.apply_along_axis(sorted, 1, b)
array([[1, 7, 8],
[3, 4, 9],
[2, 5, 6]])
3.20 计算简单移动平均线
(1) 使用ones函数创建一个长度为N的元素均初始化为1的数组,然后对整个数组除以N,即可得到权重 。如下所示:
N = int(sys.argv[1])
weights = np.ones(N) / N
print "Weights", weights
在N = 5时 , 输出结果如下:
Weights [ 0.2 0.2 0.2 0.2 0.2] #权重相等
(2) 使用这些权重值,调用convolve函数:
c = np.loadtxt('data.csv', delimiter=',', usecols=(6,),unpack=True)
sma = np.convolve(weights, c)[N-1:-N 1] #卷积是分析数学中一种重要的运算,定义为一个函数与经过翻转和平移的另一个函数的乘积的积分 。
t = np.arange(N - 1, len(c)) #作图
plot(t, c[N-1:], lw=1.0)
plot(t, sma, lw=2.0)
show()
3.22 计算指数移动平均线
指数移动平均线(exponential moving average) 。指数移动平均线使用的权重是指数衰减的 。对历史上的数据点赋予的权重以指数速度减小,但永远不会到达0 。
x = np.arange(5)
print "Exp", np.exp(x)
#output
Exp [ 1. 2.71828183 7.3890561 20.08553692 54.59815003]
Linspace 返回一个元素值在指定的范围内均匀分布的数组 。
print "Linspace", np.linspace(-1, 0, 5) #起始值、终止值、可选的元素个数
#output
Linspace [-1. -0.75 -0.5 -0.25 0. ]
(1)权重计算
N = int(sys.argv[1])
weights = np.exp(np.linspace(-1. , 0. , N))
(2)权重归一化处理
weights /= weights.sum()
print "Weights", weights
#output
Weights [ 0.11405072 0.14644403 0.18803785 0.24144538 0.31002201]
(3)计算及作图
c = np.loadtxt('data.csv', delimiter=',', usecols=(6,),unpack=True)
ema = np.convolve(weights, c)[N-1:-N 1]
t = np.arange(N - 1, len(c))
plot(t, c[N-1:], lw=1.0)
plot(t, ema, lw=2.0)
show()
3.26 用线性模型预测价格
(x, residuals, rank, s) = np.linalg.lstsq(A, b) #系数向量x、一个残差数组、A的秩以及A的奇异值
print x, residuals, rank, s
#计算下一个预测值
print np.dot(b, x)
3.28 绘制趋势线
x = np.arange(6)
x = x.reshape((2, 3))
x
array([[0, 1, 2], [3, 4, 5]])
np.ones_like(x) #用1填充数组
array([[1, 1, 1], [1, 1, 1]])
类似函数
zeros_like
empty_like
zeros
ones
empty
3.30 数组的修剪和压缩
a = np.arange(5)
print "a =", a
print "Clipped", a.clip(1, 2) #将所有比给定最大值还大的元素全部设为给定的最大值,而所有比给定最小值还小的元素全部设为给定的最小值
#output
a = [0 1 2 3 4]
Clipped [1 1 2 2 2]
a = np.arange(4)
print a
print "Compressed", a.compress(a2) #返回一个根据给定条件筛选后的数组
#output
[0 1 2 3]
Compressed [3]
b = np.arange(1, 9)
print "b =", b
print "Factorial", b.prod() #输出数组元素阶乘结果
#output
b = [1 2 3 4 5 6 7 8]
Factorial 40320
print "Factorials", b.cumprod()
#output
【python函数ones Python函数为什么会默认返回none】关于python函数ones和Python函数为什么会默认返回none的介绍到此就结束了 , 不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息 , 记得收藏关注本站 。
推荐阅读
- 判断表单姓名为空的js,form表单提交前判断为空
- 什么是虚拟拍摄技术,虚拟拍摄系统
- 制作ios手机铃声推荐,制作iphone手机铃声
- 瓶子怎么来PPT课件,瓶子ppt课件教案
- java代码演示 java 代码简洁
- 电视声音怎么变了,电视声音突然变小怎么办
- 竞技游戏电视剧免费观看,游戏竞技连续剧
- ppt如何在图片上标注尺寸,如何在ppt中对图片进行标注
- linux命令地址通的简单介绍