搜档网
当前位置:搜档网 › 《SciPy and NumPy》中文精要

《SciPy and NumPy》中文精要

《SciPy and NumPy》中文精要
《SciPy and NumPy》中文精要

一、Introduction

1. 安装Numpy 与SciPy

(1)使用Python发行包

常见的Python发行包:

Enthought Python Distribution (EPD)

ActivePython (AP)

Python(x,y)

(2)Python Windows

Step1:安装Python

下载https://https://www.sodocs.net/doc/c37215082.html,/downloads/release/python-2710/ ,64位操作系统选择Windows x86_64 MSI installer,32位操作系统选择Windows x86 MSI installer

双击安装(最好选择默认路径)

Step 2:安装包管理器pip

a. 下载https://https://www.sodocs.net/doc/c37215082.html,/pypi/pip/ ,选择pip-8.1.1.tar.gz,解压。大命令行进入dist\pip-8.1.1

b. 运行python setup.py install

c. 修改环境变量PATH,添加C:\Python27\Scripts

Step 3:使用包管理器安装numpy、scipy

NumPy和SciPy在windows下需要手动安装,否则容易出现意外的错误。过程如下

a. 从https://www.sodocs.net/doc/c37215082.html,/~gohlke/pythonlibs/ 下载相应whl包(下载python2.7版本cp27,32位下载win32,64位下载win_amd64)手动安装,手动安装注意依赖关系

b. pip install wheel

c. pip install xxxxx.whl

Step 4:安装其他包

pip install pillow

pip install pandas

pip install -U scikit-learn

pip install matplotlib

pip install ipython

pip install pyreadline

(3)Python OS X

Step 1:安装homebrew

/usr/bin/ruby -e "$(curl -fsSL

https://https://www.sodocs.net/doc/c37215082.html,/Homebrew/install/master/install)"

Step 2:重新安装python

brew install python

Step 3:安装pip

sudo easy_install pip

Step 4:安装其他包

pip install numpy

pip install scipy

pip install pillow

pip install pandas

pip install -U scikit-learn

pip install matplotlib

pip install ipython

二、Numpy

1. numpy数组与python列表效率对比

import numpy as np

# 创建大小为10^7 的数组

arr = np.arange(1e7)

larr = arr.tolist()

def list_times(alist, scalar):

for i, val in enumerate(alist):

alist[i] = val * scalar

return alist

# 利用IPython的魔术方法timeit计算运行时间

timeit arr * 1.1

>>> 1 loops, best of 3: 76.9 ms per loop

timeit list_times(larr, 1.1)

>>> 1 loops, best of 3: 2.03 s per loop

2. 创建数组并设置数据类型

(1)从列表转换

alist = [1, 2, 3]

arr = np.array(alist)

(2)np.arange()

arr = np.arange(100)

arr = np.arange(10,100)

(3)np.zeros()

arr = np.zeros(5)

np.zeros((5,5))

cube = np.zeros((5,5,5)).astype(int) + 1

cube = np.ones((5, 5, 5)).astype(np.float16)

arr = np.zeros(2, dtype=int)

arr = np.zeros(2, dtype=np.float32)

(4)reshape()

arr1d = np.arange(1000)

arr3d = arr1d.reshape((10,10,10))

arr3d = np.reshape(arr1s, (10, 10, 10))

(5)revel()

作用与reshape相反

(6)shape

显示数据对象的形状

arr1d.shape

注意:对数据形状结构的改变只是改变了数据的显示形式,即只是改变了数据的引用,对一个数据的改变另一个也会被改变。

3. 记录数组

(1)创建记录数组并赋值

recarr = np.zeros((2,), dtype=('i4,f4,a10'))

#创建大小为2的记录数组,类型为4字节整数、4字节浮点数和10字节字符

recarr[:] = [(1,2.,'Hello'),(2,3.,"World")]

(2)使用zip()

recarr = np.zeros((2,), dtype=('i4,f4,a10'))

col1 = np.arange(2) + 1

col2 = np.arange(2, dtype=np.float32)

col3 = ['Hello', 'World']

recarr[:] = zip(col1, col2, col3)

(3)为每列数据命名

https://www.sodocs.net/doc/c37215082.html,s = ('Integers' , 'Floats', 'Strings')

(4)使用列名访问数据

recarr('Integers')

4. 索引和切片

(1)numpy提供了类似于matlab的索引和切片

alist=[[1,2],[3,4]]

alist[0][1] #python方式

arr = np.array(alist)

arr[0,1] #单个元素

arr[:,1] #第1列

arr[1,:] #第1行

(2)np.where()

根据条件获取索引号

index = np.where(arr>2)

new_arr = arr[index]

new_arr = np.delete(arr, index)

也可以这样操作:

index = arr > 2 #得到一个逻辑数组

new_arr = arr[index]

注意:第二种方法速度更快,而且可以用“~ index”很容易的得到与index相反的逻辑数组。

5. NumPy数组的布尔操作

NumPy数组元素可以通过逻辑表达式方便的操作

例:

# 创建如Plot A所示的数组

img1 = np.zeros((20, 20)) + 3

img1[4:-4, 4:-4] = 6

img1[7:-7, 7:-7] = 9

# 获取数值大于2且小于6的元素索引

index1 = img1 > 2

index2 = img1 < 6

compound_index = index1 & index2

# 上式与下式结果相同

compound_index = (img1 > 3) & (img1 < 7)

img2 = np.copy(img1)

img2[compound_index] = 0

# 得到Plot B.

# 更复杂的数组逻辑操作

index3 = img1 == 9

index4 = (index1 & index2) | index3

img3 = np.copy(img1)

img3[index4] = 0 # 得到Plot C.

例:

import numpy.random as rand

a = rand.randn(100)

index = a > 0.2

b = a[index]

b = b ** 2 – 2

a[index] = b

6. 读写操作

(1)Python读写文本文件

f = open('somefile.txt', 'r') #以只读方式打开文件,'r'表示读

alist = f.readlines() #将文件内容读入列表,每一行为一个列表元素file f.close() #关闭文件

f = open('newtextfile.txt', 'w') #以可写方式打开文件,'w'表示写

f.writelines(newdata) #写入数据

f.close() #关闭文件

注意:读写完毕之后要将文件关闭

(2)Numpy文件文件读写

Python读写文件文件虽然方便且效率很好,但是不太适合处理极大的文件。当文件内容有结构,且为数字时用NumPy处理,存numpy.ndarray会更合适。

例:

import numpy as np

arr = np.loadtxt('somefile.txt')

np.savetxt('somenewfile.txt')

如果文件各列数据类型不一样,则需要指明数据类型,NumPy用来保存数据的类型为recarray,可以用处理ndarray同样的方法来对元素进行操作。recarray数据类型不能直接保存为文本文件,如果需要的话可以使用matplotlib.mlab实现。

例:

文件example.txt内容如下

XR21 32.789 1

XR22 33.091 2

读入数据

table = np.loadtxt('example.txt',

dtype='names': ('ID', 'Result', 'Type'),

'formats': ('S4', 'f4', 'i2'))

提示:如果文本数据为ASCII格式的,使用Asciitable包读写会更加高效。

(3)二进制文件

文本文件处理简单方便,但是读写速度和文件大小都不能和二进制文件相比,因此大数据处理适合使用二进制文件。

例:

import numpy as np

data = np.empty((1000, 1000)) #创建一个较大的数组

np.save('test.npy', data) #保存数据

np.savez('test.npz', data) #压缩保存数据

newdata = np.load('test.npy') #读入数据

注意:NumPy使用numpy.save和numpy.load来读写二进制文件,但这种二进制文件只能在NumPy下读写,scipy.io可以处理更通用的二进制文件

7. 数学运算

(1)线性代数

NumPy数组间的运算只是相对应元素间的远算,不能用运算符进行矩阵运算,可以使用numpy.dot 和numpy.transpose分别来进行矩阵乘法运算和矩阵转置。其优点在于常规操作时避免了对数据遍历。

NumPy的matrix类型则可以直接用运算符号进行运算。

例:使用matrix解方程组

import numpy as np

A = np.matrix([[3, 6, -5], [1, -3, 2], [5, -1, 4]]) #定义矩阵

B = np.matrix([[12], [-2], [10]])

X = A ** (-1) * B #求方程组

print(X)

例:使用数组解方程组

import numpy as np

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

b = np.array([12, -2, 10])

x = np.linalg.inv(a).dot(b)

print(x)

注意:数组的运算速度更快,而且为了在使用中保持数据类型一致,建议使用数组。

三、SciPy

1. 最优化

(1)数据建模和拟合

SciPy函数curve_fit使用基于卡方的方法进行线性回归分析。下面,首先使用f(x)=ax+b生成带有噪声的数据,然后使用用curv_fit来拟合。

例:线性回归

import numpy as np

from scipy.optimize import curve_fit

# 创建函数f(x)=ax+b

def func(x, a, b):

return a * x + b

# 创建干静数据

x = np.linspace(0, 10, 100)

y = func(x, 1, 2)

# 添加噪声

yn = y + 0.9 * np.random.normal(size=len(x))

# 拟合噪声数据

popt, pcov = curve_fit(func, x, yn)

# 输出最优参数

print(popt)

例:高斯分布拟合

# 创建函数

def func(x, a, b, c):

return a*np.exp(-(x-b)**2/(2*c**2))

# 生成干静数据

x = np.linspace(0, 10, 100)

y = func(x, 1, 5, 2)

# 添加噪声

yn = y + 0.2 * np.random.normal(size=len(x))

# 拟合

popt, pcov = curve_fit(func, x, yn)

(2)函数求解

SciPy的optimize模块中有大量的函数求解工具,fsolve是其中最常用的。例:线性函数求解

from scipy.optimize import fsolve

import numpy as np

line = lambda x: x + 3

solution = fsolve(line, -2)

print solution

例:求函数交叉点

from scipy.optimize import fsolve

import numpy as np

# 用于求解的解函

def findIntersection(func1, func2, x0):

return fsolve(lambda x : func1(x) - func2(x), x0) # 两个函数

funky = lambda x : np.cos(x / 5) * np.sin(x / 2)

line = lambda x : 0.01 * x - 0.5

x = np.linspace(0,45,10000)

result = findIntersection(funky, line, [15, 20, 30, 35, 40, 45]) # 输出结果

print(result, line(result))

2. 插值

(1)interp1d

例:正弦函数插值

import numpy as np

from scipy.interpolate import interp1d

# 创建待插值的数据

x = np.linspace(0, 10 * np.pi, 20) y = np.cos(x)

# 分别用linear和quadratic插值

fl = interp1d(x, y, kind='linear')

fq = interp1d(x, y, kind='quadratic')

xint = np.linspace(x.min(), x.max(), 1000)

yintl = fl(xint)

yintq = fq(xint)

(2)UnivariateSpline

例:噪声数据插值

import numpy as np

from scipy.interpolate import UnivariateSpline

# 创建含噪声的待插值数据

sample = 30

x = np.linspace(1, 10 * np.pi, sample)

y = np.cos(x) + np.log10(x) + np.random.randn(sample) / 10

# 插值,参数s为smoothing factor

f = UnivariateSpline(x, y, s=1)

xint = np.linspace(x.min(), x.max(), 1000)

yint = f(xint)

(3)griddata

例:利用插值重构图片

import numpy as np

from scipy.interpolate import griddata

# 定义一个函数

ripple = lambda x, y: np.sqrt(x**2 + y**2)+np.sin(x**2 + y**2)

# 生成grid数据,复数定义了生成grid数据的step,若无该复数则step为5 grid_x, grid_y = np.mgrid[0:5:1000j, 0:5:1000j]

# 生成待插值的样本数据

xy = np.random.rand(1000, 2)

sample = ripple(xy[:,0] * 5 , xy[:,1] * 5)

# 用cubic方法插值

grid_z0 = griddata(xy * 5, sample, (grid_x, grid_y), method='cubic')

上图中,左侧为原始数据,其中的黑点是待插值的样本,右图为插值后的数据。要想提高质量,生成更大的样本数据即可。

(4)SmoothBivariateSpline

例:利用插值重构图片

import numpy as np

from scipy.interpolate import SmoothBivariateSpline as SBS

# 定义函数

ripple = lambda x, y: np.sqrt(x**2 + y**2)+np.sin(x**2 + y**2)

# 生成待插值样本

xy= np.random.rand(1000, 2)

x, y = xy[:,0], xy[:,1]

sample = ripple(xy[:,0] * 5 , xy[:,1] * 5)

# 插值

fit = SBS(x * 5, y * 5, sample, s=0.01, kx=4, ky=4)

interp = fit(np.linspace(0, 5, 1000), np.linspace(0, 5, 1000))

注意:SmoothBivariateSpline有时候表现比Spline更好一些,但是它对样本数据更敏感一些,相对而言Spline更加健壮。

3. 积分

SicPy中的积分是近似的数值积分,SymPy是一个符号积分的工具包。

(1)解析积分

例:

import numpy as np

from scipy.integrate import quad

# 定义被积函数

func = lambda x: np.cos(np.exp(x)) ** 2

solution = quad(func, 0, 3)

print solution

# 输出结果中第一个数字为积分值,第二个为误差

# (1.296467785724373, 1.397797186265988e-09)

(2)数值积分

例:

import numpy as np

from scipy.integrate import quad, trapz

# Setting up fake data

x = np.sort(np.random.randn(150) * 4 + 4).clip(0,5)

func = lambda x: np.sin(x) * np.cos(x ** 2) + 1

y = func(x)

# Integrating function with upper and lower # limits of 0 and 5, respectively

fsolution = quad(func, 0, 5)

dsolution = trapz(y, x=x)

print('fsolution = ' + str(fsolution[0]))

print('dsolution = ' + str(dsolution))

print('The difference is ' + str(np.abs(fsolution[0] - dsolution)))

# fsolution = 5.10034506754

# dsolution = 5.04201628314

# The difference is 0.0583287843989.

4. 统计

SciPy中有包括mean, std, median, argmax, 及argmin等在内的基本统计函数,而且numpy.arrays类型中内置了大部分统计函数,以便于使用。

import numpy as np

# 创建大小为1000的随机数组

elements x = np.random.randn(1000)

mean = x.mean() #均值

std = x.std() #标准差

var = x.var() #方差

SciPy中还包括了各种分布、函数等工具。

(1)连续和离散分布

SciPy的scipy.stats包中包含了大概80种连续分布和10种离散分布。下图是其中的20种连续分布的概率密度函数。这些分布函数其实都依赖于numpy.random函数。

有几种方法来使用scipy.stats中的分布时:概率密度函数(PDFs)、累积分布函数(CDFs)、随机变量样本(RVSs)、百分比点函数(PPFs)等。下面基于标准正态分布函数,来演示如何使用这些分布。

例:

import numpy as np

import scipy.stats import norm

# 创建样本区间

x = np.linspace(-5,5,1000)

# 设置正态分布参数,loc为均值,scale为标准差

dist = norm(loc=0, scale=1)

# 得到正态分布的PDF 和CDF

pdf = dist.pdf(x)

cdf = dist.cdf(x)

# 根据分布生成500个随机数

sample = dist.rvs(500)

可以基于SciPy.stats中的任何连续分布生成随机数,有需要请查看文档。除此外,如泊松分布、二项分布、几何分布等离散分布的使用也很简单。下式为几何分布的概率分布函数(PMF):

例:

import numpy as np

from scipy.stats import geom

# 设置几何分布的参数

p = 0.5

dist = geom(p)

# 设置样本区间

x = np.linspace(0, 5, 1000)

# 得到几何分布的PMF 和CDF

pmf = dist.pmf(x)

cdf = dist.cdf(x)

# 生成500个随机数

sample = dist.rvs(500)

(2)函数

SciPy中有超过60种统计函数。stats包中包括了诸如kstest 和normaltest等的样本测试函数,用来检测样本是否服从某种分布。提示:在使用这些工具前,要对数据有较好的理解,否则可能会误读它们的结果。

例:样本分布检验

import numpy as np

from scipy import stats

# 生成包括100个服从正态分布的随机数样本

sample = np.random.randn(100)

# 用normaltest检验原假设

out = stats.normaltest(sample)

print('normaltest output')

print('Z-score = ' + str(out[0]))

print('P-value = ' + str(out[1]))

# kstest 是检验拟合度的Kolmogorov-Smirnov检验,这里针对正态分布进行检验,# D是KS统计量的值,越接近0越好

out = stats.kstest(sample, 'norm')

print('\nkstest output for the Normal distribution')

print('D = ' + str(out[0]))

print('P-value = ' + str(out[1]))

# 类似地可以针对其他分布进行检验,例如Wald分布

out = stats.kstest(sample, 'wald')

print('\nkstest output for the Wald distribution')

print('D = ' + str(out[0]))

print('P-value = ' + str(out[1]))

SciPy的stats模块中还提供了一些描述函数,如几何平均(gmean)、偏度(skew)、样本频数(itemfreq)等。

例:

import numpy as np

from scipy import stats

#生成包括100个服从正态分布的随机数样本

sample = np.random.randn(100)

# 调和平均数,样本值须大于0

out = stats.hmean(sample[sample > 0])

print('Harmonic mean = ' + str(out))

# 计算-1到1之间样本的均值

out = stats.tmean(sample, limits=(-1, 1))

print('\nTrimmed mean = ' + str(out))

# 计算样本偏度

out = stats.skew(sample)

print('\nSkewness = ' + str(out))

# 函数describe可以一次给出样本的多种描述统计结果

out = stats.describe(sample)

print('\nSize = ' + str(out[0]))

print('Min = ' + str(out[1][0]))

print('Max = ' + str(out[1][1]))

print('Mean = ' + str(out[2]))

print('Variance = ' + str(out[3]))

print('Skewness = ' + str(out[4]))

print('Kurtosis = ' + str(out[5]))

SciPy的stats模块中还有很多统计工具,可以满足绝大多数需要。还可以用RPy,通过它能够在Python中调用R语言进行统计分析。此外,Pandas是python的一个强大的工具包,它可以在大数据上进行快速的统计分析。

5. 空间和聚类分析

SciPy包括scipy.spatial类和scipy.cluster类分别用于空间和聚类分析。前者用于分析数据点之间的距离,后者包括两个子类矢量量化(vq)和层次聚类(hierarchy)。

(1)矢量量化(Vector Quantization)

矢量量化是信号处理、数据压缩和聚类等领域通用的术语。这里仅关注其在聚类中的应用。

例:k均值聚类

import numpy as np

from scipy.cluster import vq

# 生成数据

c1 = np.random.randn(100, 2) + 5

c2 = np.random.randn(30, 2) - 5

c3 = np.random.randn(50, 2)

# 将所有数据放入一个180 x 2 的数组

data = np.vstack([c1, c2, c3])

# 利用k均值方法计算聚类的质心和方差

centroids, variance = vq.kmeans(data, 3)

# 变量identified中存放关于数据聚类的信息

identified, distance = vq.vq(data, centroids)

# 获得各类别的数据

vqc1 = data[identified == 0]

vqc2 = data[identified == 1]

vqc3 = data[identified == 2]

(2)层次聚类

层次聚类是一种重要的聚类方法,但其输出结果比较复杂,不能像k均值那样给出清晰的聚类结果。下面是一个层次聚类的例子,输入一个距离矩阵,输出为一个树状图。例:

# coding:utf-8

import numpy as np

import matplotlib.pyplot as mpl

from scipy.spatial.distance import pdist, squareform

import scipy.cluster.hierarchy as hy

# 用于生成聚类数据的函数

def clusters(number=20, cnumber=5, csize=10):

# 聚类服从高斯分布

rnum = np.random.rand(cnumber, 2)

rn = rnum[:, 0] * number

rn = rn.astype(int)

rn[np.where(rn < 5)] = 5

rn[np.where(rn > number / 2.)] = round(number / 2., 0)

ra = rnum[:, 1] * 2.9

ra[np.where(ra < 1.5)] = 1.5

cls = np.random.randn(number, 3) * csize

# Random multipliers for central point of cluster

rxyz = np.random.randn(cnumber - 1, 3)

for i in xrange(cnumber - 1):

tmp = np.random.randn(rn[i + 1], 3)

x = tmp[:, 0] + (rxyz[i, 0] * csize)

y = tmp[:, 1] + (rxyz[i, 1] * csize)

z = tmp[:, 2] + (rxyz[i, 2] * csize)

tmp = np.column_stack([x, y, z])

cls = np.vstack([cls, tmp])

return cls

# 创建待聚类数据及矩离矩阵

cls = clusters()

D = pdist(cls[:, 0:2])

D = squareform(D)

# 绘制左侧树状图

fig = mpl.figure(figsize=(8, 8))

ax1 = fig.add_axes([0.09, 0.1, 0.2, 0.6])

Y1 = hy.linkage(D, method='complete')

cutoff = 0.3 * np.max(Y1[:, 2])

Z1 = hy.dendrogram(Y1, orientation='left', color_threshold=cutoff) ax1.xaxis.set_visible(False)

ax1.yaxis.set_visible(False)

#绘制顶部树状图

ax2 = fig.add_axes([0.3, 0.71, 0.6, 0.2])

Y2 = hy.linkage(D, method='average')

cutoff = 0.3 * np.max(Y2[:, 2])

Z2 = hy.dendrogram(Y2, color_threshold=cutoff)

ax2.xaxis.set_visible(False)

ax2.yaxis.set_visible(False)

# 显示距离矩阵

ax3 = fig.add_axes([0.3, 0.1, 0.6, 0.6])

idx1 = Z1['leaves']

idx2 = Z2['leaves']

D = D[idx1, :]

D = D[:, idx2]

ax3.matshow(D, aspect='auto', origin='lower', cmap=mpl.cm.YlGnBu)

ax3.xaxis.set_visible(False)

ax3.yaxis.set_visible(False)

# 保存图片,显示图片

fig.savefig('cluster_hy_f01.pdf', bbox = 'tight')

mpl.show()

在上图虽然计算了数据点之间的距离,但是还是难以将各类区分开。函数fcluster 可以根据阈值来区分各类,其输出结果依赖于linkage函数所采用的方法,如complete 或single等,它的第二个参数即是阈值。dendrogram函数中默认的阈值是0.7 * np.max(Y[:, 2]),这里还使用0.3。

例:

# 导入的包同上例一致, 函数cluster同上例

# 获得不同类别数据点的坐标

def group(data, index):

number = np.unique(index)

groups = []

for i in number:

groups.append(data[index == i])

return groups

# 创建数据

cls = clusters()

# 计算kinkage矩阵

Y = hy.linkage(cls[:,0:2], method='complete')

# 从层次数据结构中, 用fcluster函数将层次结构的数据转为flat clusters

cutoff = 0.3 * np.max(Y[:, 2])

index = hy.fcluster(Y, cutoff, 'distance')

# 使用grooup函数将数据划分类别

groups = group(cls, index)

# 绘制数据点

fig = mpl.figure(figsize=(6, 6))

ax = fig.add_subplot(111)

colors = ['r', 'c', 'b', 'g', 'orange', 'k', 'y', 'gray']

for i, g in enumerate(groups):

i = np.mod(i, len(colors))

ax.scatter(g[:,0], g[:,1], c=colors[i], edgecolor='none', s=50)

ax.xaxis.set_visible(False)

ax.yaxis.set_visible(False)

fig.savefig('cluster_hy_f02.pdf', bbox = 'tight')

mpl.show()

6. 信号和图像处理

SimPy可以高效的处理JPEG和PNG等格式的图片,下面利用SimPy将多副图片叠加成一副图片。

本部分实例更多内容参见:

https://www.sodocs.net/doc/c37215082.html,/questions/9251580/stacking-astronomy-images-with-python 例:

import numpy as np

from scipy.misc import imread, imsave

from glob import glob

# 获取文件夹中全部JPG图片

files = glob('space/*.JPG')

# 打开第一个图片

im1 = imread(files[0]).astype(np.float32)

# 叠加图片

for i in xrange(1, len(files)):

print i

im1 += imread(files[i]).astype(np.float32)

# 保存图片

imsave('stacked_image.jpg', im1)

例:

import numpy as np

from scipy.misc import imread, imsave

from glob import glob

# 该函数对比两副图片,选择两副图片中相同位置上较亮的点生成新的图片def chop_lighter(image1, image2):

s1 = np.sum(image1, axis=2)

s2 = np.sum(image2, axis=2)

index = s1 < s2

image1[index, 0] = image2[index, 0]

image1[index, 1] = image2[index, 1]

image1[index, 2] = image2[index, 2]

return image1

files = glob('space/*.JPG')

im1 = imread(files[0]).astype(np.float32)

im2 = np.copy(im1)

for i in xrange(1, len(files)):

print i

im = imread(files[i]).astype(np.float32)

im1 += im

im2 = chop_lighter(im2, im)

# 调整并保存图像

imsave('stacked_image.jpg', im1/im1.max() + im2/im2.max()*0.2)

注意:imread 和imsave需要安装pillow包,pip install pillow

Python环境中的JPG图片格式为(426, 640, 3)的NumPy数组(RGB)

7. 稀疏矩阵

NumPy处理106级别的数据没什么大问题,当数据量达到107级别时速度开始变慢,内存受到限制(具体情况取决于实际内存大小)。当处理超大规模数据集,比如1010级别,且数据中包含大量的0时,可采用稀疏矩阵可显著的提高速度和效率。

提示:使用data.nbytes可查看数据所占空间大小

例:矩阵与稀疏矩阵运算对比

# coding:utf-8

import numpy as np

from scipy.sparse.linalg import eigsh

from scipy.linalg import eigh

import scipy.sparse

import time

N = 3000

# 创建随机稀疏矩阵

m = scipy.sparse.rand(N, N)

# 创建包含相同数据的数组

a = m.toarray()

print('The numpy array data size: ' + str(a.nbytes) + ' bytes')

print('The sparse matrix data size: ' + str(m.data.nbytes) + ' bytes')

# 数组求特征值

t0 = time.time()

res1 = eigh(a)

dt = str(np.round(time.time() - t0, 3)) + ' seconds'

print('Non-sparse operation takes ' + dt)

# 稀疏长阵求特征值

t0 = time.time()

(公司理财)公司理财中文版第九版第三章答案

第三章财务报表分析与长期财务规划 1.由于不同行业的公司在财务比率上存在很大的差异,财务比率本身提供的信息有限,分析公司的财务比率有两种基本方法:时间趋势分析法和同类公司分析。为什么这些方法会有用呢?每种方法能够告诉你哪些关于公司财务健康状况的信息? 答:时间趋势分析描绘了公司财务状况随时间而变化的图景。通过公司本身的跨期比较分析,财务经理可以评价公司的经营、融资或投资活动的某些方面是否已经发生了变化。同类公司比较分析涉及到将某一特定公司的财务比率和经营绩效与同一行业或业务相同的其他公司进行比较。通过同类公司比较分析,财务经理可以评价公司的经营、融资或投资活动的某些方面是否越出常规,从而为调整这些比率采取恰当的行动提供指南,如果这种调整合适的话。两种方法都从财务的视角研究一个公司究竟有什么不同,但两种方法都不能告诉我们这种不同是积极正面的还是消极负面的。例如,假设一个公司的流动比率是随时间而提高,这可能意味着该公司在过去一直面临流动性问题,一直在纠正这些问题;或者它也可能意味着该公司已经在管理流动资产和负债方面变得更低效。同类公司比较分析中也存在类似的争论。一个公司的流动比率低于同类公司,也许是它在管理流动资产和负债方面更具效率,也可能是它面临流动性问题。没有哪种方法告诉我们某个比率是好还是坏。两种方法只是表明有些东西存在差异,并告诉我们去哪里寻找。 2.所谓的“同店销售”是像沃尔玛和希尔斯之类的十分分散的公司的

一项重要指标,顾名思义,分析同店销售就是比较同样的店铺或餐馆在两个不同的时间点上的销售额。为什么公司总是关注同店销售而不是总销售? 答:如果一家公司通过开设新店来不断增长,那么可以推测其总收入将上升。比较两个不同时点的总销售额可能会误导。同店销售方法只看在特定时期开设的店铺的销售额控制了这一误差。 3.为什么多数长期财务计划都从销售预测开始?或者说,为什么未来销售额是关键? 答:理由是,最终,消费是商业背后的驱动力。一个企业的资产、雇员,事实上,几乎企业经营和融资的所有方面都是直接或间接地支持销售。换种说法,一个企业对资本资产、雇员、存货以及融资的未来需求都由它的未来销售所决定。 4.本章利用Rosengarten公司说明EFN的计算,Rosengarten的ROE 约为7.3%,利润再投资率约为67%,如果你为Rosengarten计算可持续增长率,会发现它只有 5.14%,而我们在计算EFN时所使用的增长率为25%,这可能吗?(提示:有可能。如何实现?) 答:可持续增长公式的两个假设是,公司并不想出售新的股票,以及财务政策是固定的。如果公司增加外部股权,或提高其债务权益比率,它的增长速度可以比可持续增长率更高。当然,如果公司改变其股利政策,提高留成比例,或其总资产周转率提高,它的增长速度也可以快于它的销售净利率提高的速度。 5. Broslofski公司每年都维持一个正的留存比率,并保持负债权益比

公司理财精要版计算题

可持续增长假设下列比率是固定的,可持续增长率是多少? 总资产周转率=1.40 利润率=7.6% 权益乘数=1.50 股利支付比率=25% 计算EFN ERT公司最新财务报表如下表所示(单位:美元)。2006年的销售收入预期增长20%。利息费用将维持固定;税率和股利支付比率也将维持固定。销货成本、其他费用、流动资产和应付账款随着销售收入自发增加。 ERT公司2005年损益表 销售收入 905000 成本 710000 其他费用 12000 息前税前利润 183000 利息支付 19700 应税利润 163300 所得税(35%) 57155 净利润 106145 股利42458

留存收益增加 63687 ERT 公司资产负债表(截至2005年12月31日) 资产 负债和所有者权益 流动资产 流动负债 现金 25000 应付账款 65000 应收账款 43000 应付票据 9000 存货 76000 合计 74000 合计 144000 长期债务 156000 固定资产 所有者权益 厂房和设备净值 364000 普通股和股本溢价 21000 留存收益 257000 合计 278000 资产总计 508000 负债和所有者权益总计 508000 A. 如果该企业以完全产能运营且没有发行任何新的债务或权益,要支持20%销售收入增长率所需外部融资是多少? B. 假设该企业2005年仅以80%产能在运营。此时EFN 是多少? C. 假设该企业希望它的负债-权益比率固定,此时的EFN 是多少? 永久生命保险公司正在向你推荐一项保险政策,该政策规定,公司将永久性地每年向你和你的后代支付15 000美元。 a 、如果必要的投资收益率为8%时,你愿意以什么价格购买该保险? 1. 187500 美元 2. 178500美元 3. 158700美元 4.185700美元 b 、假定该保险公司告诉你这项保险的价格为19 5000美元,请你计算利率为多少? 1. 6.79% 2. 7.96% 3. 7.69% 4. 9.76%

公司理财第九版中文答案

第一章 1.在所有权形式的公司中,股东是公司的所有者。股东选举公司的董事会,董事会任命该公司的管理层。企业的所有权和控制权分离的组织形式是导致的代理关系存在的主要原因。管理者可能追求自身或别人的利益最大化,而不是股东的利益最大化。在这种环境下,他们可能因为目标不一致而存在代理问题。 2.非营利公司经常追求社会或政治任务等各种目标。非营利公司财务管理的目标是获取并有效使用资金以最大限度地实现组织的社会使命。 3.这句话是不正确的。管理者实施财务管理的目标就是最大化现有股票的每股价值,当前的股票价值反映了短期和长期的风险、时间以及未来现金流量。 4.有两种结论。一种极端,在市场经济中所有的东西都被定价。因此所有目标都有一个最优水平,包括避免不道德或非法的行为,股票价值最大化。另一种极端,我们可以认为这是非经济现象,最好的处理方式是通过政治手段。一个经典的思考问题给出了这种争论的答案:公司估计提高某种产品安全性的成本是30美元万。然而,该公司认为提高产品的安全性只会节省20美元万。请问公司应该怎么做呢?” 5.财务管理的目标都是相同的,但实现目标的最好方式可能是不同的,因为不同的国家有不同的社会、政治环境和经济制度。 6.管理层的目标是最大化股东现有股票的每股价值。如果管理层认为能提高公司利润,使股价超过35美元,那么他们应该展开对恶意收购的斗争。如果管理层认为该投标人或其它未知的投标人将支付超过每股35美元的价格收购公司,那么他们也应该展开斗争。然而,如果管理层不能增加企业的价值,并且没有其他更高的投标价格,那么管理层不是在为股东的最大化权益行事。现在的管理层经常在公司面临这些恶意收购的情况时迷失自己的方向。 7.其他国家的代理问题并不严重,主要取决于其他国家的私人投资者占比重较小。较少的私人投资者能减少不同的企业目标。高比重的机构所有权导致高学历的股东和管理层讨论决策风险项目。此外,机构投资者比私人投资者可以根据自己的资源和经验更好地对管理层实施有效的监督机制。 8.大型金融机构成为股票的主要持有者可能减少美国公司的代理问题,形成更有效率的公司控制权市场。但也不一定能。如果共同基金或者退休基金的管理层并不关心的投资者的利益,代理问题可能仍然存在,甚至有可能增加基金和投资者之间的代理问题。

公司理财精要版原书第12版习题库答案Ross12e_Chapter05_TB

Fundamentals of Corporate Finance, 12e (Ross) Chapter 5 Introduction to Valuation: The Time Value of Money 1) Andy deposited $3,000 this morning into an account that pays 5 percent interest, compounded annually. Barb also deposited $3,000 this morning at 5 percent interest, compounded annually. Andy will withdraw his interest earnings and spend it as soon as possible. Barb will reinvest her interest earnings into her account. Given this, which one of the following statements is true? A) Barb will earn more interest in Year 1 than Andy will. B) Andy will earn more interest in Year 3 than Barb will. C) Barb will earn more interest in Year 2 than Andy. D) After five years, Andy and Barb will both have earned the same amount of interest. E) Andy will earn compound interest. 2) Nan and Neal are twins. Nan invests $5,000 at 7 percent at age 25. Neal invests $5,000 at 7 percent at age 30. Both investments compound interest annually. Both twins retire at age 60 and neither adds nor withdraws funds prior to retirement. Which statement is correct? A) Nan will have less money when she retires than Neal. B) Neal will earn more interest on interest than Nan. C) Neal will earn more compound interest than Nan. D) If both Nan and Neal wait to age 70 to retire they will have equal amounts of savings. E) Nan will have more money than Neal at any age. 3) You are investing $100 today in a savings account. Which one of the following terms refers to the total value of this investment one year from now? A) Future value B) Present value C) Principal amount D) Discounted value E) Invested principal 4) Christina invested $3,000 five years ago and earns 2 percent annual interest. By leaving her interest earnings in her account, she increases the amount of interest she earns each year. The way she is handling her interest income is referred to as: A) simplifying. B) compounding. C) aggregating. D) accumulating. E) discounting.

公司理财罗斯中文版17

第17章 财务杠杆和资本结构政策 ◆本章复习与自测题 17.1 EBIT和EPS 假设BDJ公司已经决定进行一项资本重组,它涉及到将现有的8 000万美元债务增加到12 500万美元。债务的利率是9%,并且预期不会改变。公司目前有1 000万股流通在外,每股价格是45美元。如果预期重组可以提高ROE,那么,BDJ的管理当局必定预期EBIT至少达到什么水平?解答时不考虑税。 17.2 MM第二定理(无税) Habitat公司的WACC是16%,债务成本是13%。如果Habitat的债务权益率是2,它的权益资本成本是多少?解答时不考虑税。 17.3 MM第一定理(有公司税) Gypco公司预期永远都有每年10 000美元的EBIT。Gypco可以以7%的利率借款。假设Gypco目前没有债务,它的权益成本是17%。如果公司的税率是35%,公司的价值是多少?如果Gypco借入15 000美元,并用它来回购股票,公司的价值是多少? ◆本章复习与自测题解答 17.1 要解答这个问题,我们可以计算临界EBIT。在超过这一点的任何EBIT上,提高财务杠杆都将提高EPS。在原有 的资本结构下,利息费用是8 000万美元×0.09 = 720万美元。因为有1 000万股股票,因此,不考虑税,EPS为:(EBIT-720万美元)/1 000万。 在新的资本结构下,利息费用是:12 500万美元×0.09 = 1 125万美元。并且,债务增加了4 500万美元。这个金额足够买回4 500万美元/45 = 100万股股票,剩下900万股流通在外。因此,EPS是:(EBIT -1 125万美元)/900万。 既然我们知道如何计算这两种情况下的EPS。我们假定它们彼此相等,求出临界EBIT: (EBIT -720万美元)/1 000万= (EBIT-1 125万美元)/900万 (EBIT -720万美元) = 1.11×(EBIT-1 125万美元) EBIT = 4 770万美元 可以验证,在两种情况下,当EBIT是4 770万美元时,EPS都是4.05美元。 17.2 根据MM第二定理(无税),权益成本是: R E = R A + (R A -R D )×(D/E)= 16% + (16% -13%)×2 = 22% 17.3 在没有公司税的情况下,Gypco的WACC是17%。这也是不利用杠杆的公司的资本成本。税后现金流量是:10 000美元×(1-0.35) = 6 500美元,因此,价值就是:V U = 6 500美元/0.17 = 38 235美元。 发行债务之后,Gypco的价值将是原来的38 235美元加上税盾的现值T C ×D,也就是0.35×15 000美元= 5 250美元。因

公司理财罗斯中文版14

第14章 期权与公司理财 ◆本章复习与自测题 14.1 看涨期权的价值 Nantucket公司的股票目前以每股25美元的价格出售。1年后,股票价格将要么是20美元,要么是30美元。1年后到期的国库券支付10%的利息。执行价格为20美元的看涨期权的价值是多少?执行价格为26美元的呢? 14.2 可转换债券 Old Cycle公司(OCC)是《古代钢铁》(Ancient Iron)杂志出版商,它发行的可转换债券目前在市场上的售价为950美元。如果持有者选择转换,则每1张债券可以交换100股股票。 债券的利息为7%,逐年支付,债券将在10年后到期。OCC的债务属于BBB级。这个级别的债务的标价收益率为12%。 OCC的股票正以每股7美元的价格交易。 债券的转换比率是多少?转换价格呢?转换溢价呢?债券的底线价值是多少?它的期权价值是多少? ◆本章复习与自测题解答 14.1 执行价格为20美元时,期权不可能出现虚值(如果股票价格为20美元,它将实现实值)。我们可以通过将20美元 的现值投资于国库券并购买包含1股的看涨期权来复制股票的价值。购买国库券将花费20美元/1.1 = 18.18美元。 如果股票最终的价格为20美元,看涨期权的价值将为0,而国库券将值20美元。如果股票最终的价格为30美元,国库券仍然能偿付20美元,而期权的价值将为30美元-20美元= 10美元,所以组合的价值将为30美元。因为这个国库券和看涨期权的组合实际上复制了股票的回报,所以它的价值必须是20美元,否则就有套利的可能。利用本章中的符号,我们可以这样计算看涨期权的价值: S 0= C + E/(1 + R f ) 25美元= C + 18.18美元 C = 6.82美元 当执行价格为26美元时,我们从按较低的股票价格的现值投资于国库券着手。它保证我们在股票价格为20美元时能有20美元。如果股票价格是30美元,那么期权的价值为30美元-26美元= 4美元。我们从国库券中获得20美元,所以我们需要从期权中获得10美元以便与股票相配比。因为在这种情况下每包含1股的期权的价值是4美元,我们需要购买包含10美元/4美元= 2.5股的看涨期权。请注意可能的股票价格之间的差额(?S)是10美元,可能的期权价格之间的差额(?C)是4美元,因此?S/?C= 2.5。 为了完成计算,我们注意到要防止套利,20美元的现值加上包含2.5股的期权的价值必须是20美元,因此: 25美元= 2.5×C +20美元/1.1 C = 6.82美元/2.5 = 2.73美元

第九版-公司理财-罗斯-中文答案-第五章汇编

1、如果项目带来的是常规的现金流,而且其回收期短于该项目的生命周期,还 不能准备判断其净现值的正负。仍需要其采用的折现率和其内部收益率IRR 做对比。当折现率小于IRRA时,净现值为正值,当折现率大于IRRA时,净现值为负值,两者相等时,净现值为零。如果一个项目的折现回收期短于该项目的生命周期,则净现值一定为正值。 2、项目有常规的现金流,且NPV为正值,则各期流入的现金流折现总和一定大 于期初项目资金流出。而各期流入的现金流总和肯定大于折现总和,所以该项目的回收期一定短于其生命周期。同时折现回收期是用和净现值同样的NPV计算出来的,所以折现回收期也一定短于其生命周期。同样净现值为正值,说明初始投资所带来的后续现金流的现值大于初始投资,所以盈利指数PI一定大于1。如果使用内部收益率折现各期现金流量时,净现值为零。而以折现率折现各期现金流量时,净现值为正,说明折现率小于内部收益率。 3、a 回收期是指投资引起的现金流入累计到与投资相等所需要的时间。它代 表收回投资所需要的年限。回收年限越短,方案越有利。其缺陷就是忽略了回收期内现金流量的时间序列,也忽略了回收期以后的现金支付,同时对于回收期的选择也存在主观臆断。选择一个具体的回收期决策标准,当项目的回收期小于标准的就可行,大于标准的则拒绝。 b 平均会计收益率是指为扣除所得税和折旧之后的项目平均收益除以整个 项目期限内的平均账面投资额。其缺陷是使用账面收益而非现金流量,忽略了折旧对现金流量的影响,忽视了净收益的时间分布对项目经济价值的影响。 当项目的平均会计收益率小于目标平均会计收益率时,则拒绝项目,反之接受。 c 内部收益率就是令项目净现值为0的折现率。其缺点是对于特殊项目无法 用一般原则进行判断,并且有些项目可能会出现多个收益率的现象。同时对于互斥项目容易忽视其规模问题和时间序列问题。一般原则是当折现率小于IRR时,接受该项目,反之则拒绝。 d 盈利指数是初始投资所带来的后续现金流的现值和初始投资的比值。缺陷 是如果初始投资之后在资金使用上还有限制,则盈利指数就会失效。同时在互斥项目上,其也忽视了项目在规模上的差异。若项目的PI大于1,则项目可以接受,反之,则应该拒绝。 e 净现值就是项目各期的现金流量的现值的代数和。净现值法主要具有三个 特点:第一,净现值使用了现金流量。第二,净现值包含了项目的全部现金流量。第三,净现值对现金流量进行了合理的折现。当项目的净现值为正时,接受该项目,当项目的净现值为负的时候,拒绝该项目。 4、对于一个具有永续现金流的项目来说: 回收期:T=I/C 内部收益率:IRR=C/I 则T*IRR=1,即回收期和内部收益率互为倒数。 对于拥有相对固定现金流的长期项目而言,内部收益率越高,则回收期越短。 5、原因有很多,最主要的两个是运输成本以及汇率的原因。在美国制造生产可 以接近于产品销售地,极大的节省了运输成本。同样运输时间的缩短也减少了商品的存货。跟某些可能的制造生产地来说,选择美国可能可以一定程度上减少高额的劳动力成本。还有一个重要因素是汇率,在美国制造生产所付出的生产成本用美元计算,在美国的销售收入同样用美元计算,这样可以避免汇率的波动对公司净利润的影响。

{财务管理公司理财}罗斯公司理财第八九版中文课后习题答案

{财务管理公司理财}罗斯公司理财第八九版中文课后习题答案

理层并不关心的投资者的利益,代理问题可能仍然存在,甚至有可能增加基金和投资者之间的代理问题。 (3)就像市场需求其他劳动力一样,市场也需求首席执行官,首席执行官的薪酬是由市场决定的。这同样适用于运动员和演员。首席执行官薪酬大幅度增长的一个主要原因是现在越来越多的公司实行股票报酬,这样的改革是为了更好的协调股东和管理者的利益。这些报酬有时被认为仅仅对股票价格上涨的回报,而不是对管理能力的奖励。或许在将来,高管薪酬仅用来奖励特别的能力,即,股票价格的上涨增加了超过一般的市场。 10.最大化现在公司股票的价格和最大化未来股票价格是一样的。股票的价值取决于公司未来所有的现金流量。从另一方面来看,支付大量的现金股利给股东,股票的预期价格将会上升。 第二章 1.正确。所有的资产都可以以某种价格转换为现金。但是提及流动资产,假定该资产转换为现金时可达到或接近其市场价值是很重要的。 2.按公认会计原则中配比准则的要求,收入应与费用相配比,这样,在收入发生或应计的时候,即使没有现金流量,也要在利润表上报告。注意,这种方式是不正确的;但是会计必须这么做。 3.现金流量表最后一栏数字表明了现金流量的变化。这个数字对于分析一家公司并没有太大的作用。 4.两种现金流量主要的区别在于利息费用的处理。会计现金流量将利息作为营运现金流量,而财务现金流量将利息作为财务现金流量。会计现金流量的逻辑是,利息在利润表的营运阶段出现,因此利息是营运现金流量。事实上,

利息是财务费用,这是公司对负债和权益的选择的结果。比较这两种现金流量,财务现金流量更适合衡量公司业绩。 5.市场价值不可能为负。想象某种股票价格为-20美元。这就意味着如果你订购100股的股票,你会损失两万美元的支票。你会想要买多少这种股票?根据企业和个人破产法,个人或公司的净值不能为负,这意味着负债不能超过资产的市场价值。 6.比如,作为一家成功并且飞速发展的公司,资本支出是巨大的,可能导致负的资产现金流量。一般来说,最重要的问题是资本使用是否恰当,而不是资产的现金流量是正还是负。 7.对于已建立的公司出现负的经营性现金流量可能不是好的表象,但对于刚起步的公司这种现象是很正常的。 8.例如,如果一个公司的库存管理变得更有效率,一定数量的存货需要将会下降。如果该公司可以提高应收帐款回收率,同样可以降低存货需求。一般来说,任何导致期末的NWC相对与期初下降的事情都会有这样的作用。负净资本性支出意味着资产的使用寿命比购买时长。 9.如果公司在某一特定时期销售股票比分配股利的数额多,公司对股东的现金流量是负的。如果公司借债超过它支付的利息和本金,对债权人的现金流量就是负的。 10.那些核销仅仅是会计上的调整。 11.Ragsdale公司的利润表如下

公司理财精要版原书第12版教师手册RWJ_Fund_12e_IM_Chapter19_Appendi

Appendix 19A DETERMINING THE TARGET CASH BALANCE SLIDES 19A.1Chapter 19 Appendix 19A.2Costs of Holding Cash 19A.3The BAT Model – I 19A.4The BAT Model – II 19A.5The BAT Model – III 19A.6The BAT Model – IV 19A.7The Miller-Orr Model 19A.8The Miller-Orr Model: Math 19A.9Implications of the Miller-Orr Model 19A.10I mplications of the Miller-Orr Model (ctd.) 19A.11O ther Factors Influencing the Target Cash Balance 19A.12E nd of Chapter APPENDIX ORGANIZATION 19A.1 The Basic Idea 19A.2 The BAT Model 19A.3 The Miller-Orr Model: A More General Approach 19A.4 Implications of the BAT and Miller-Orr Models 19A.5 Other Factors Influencing the Target Cash Balance ANNOTATED APPENDIX OUTLINE Slide 1: Chapter 19 Appendix Target cash balance – the desired cash balance as determined by the trade-off between carrying costs and storage costs Adjustment costs – costs associated with holding low levels of cash; shortage costs With a flexible working capital policy, the trade-off is between the opportunity cost of cash balances and the adjustment costs of buying, selling, and managing securities.

公司理财中文版第九版第三章答案

公司理财中文版第九版第三章答案

第三章财务报表分析与长期财务规划 1.由于不同行业的公司在财务比率上存在很大的差异,财务比率本身提供的信息有限,分析公司的财务比率有两种基本方法:时间趋势分析法和同类公司分析。为什么这些方法会有用呢?每种方法能够告诉你哪些关于公司财务健康状况的信息? 答:时间趋势分析描绘了公司财务状况随时间而变化的图景。通过公司本身的跨期比较分析,财务经理可以评价公司的经营、融资或投资活动的某些方面是否已经发生了变化。同类公司比较分析涉及到将某一特定公司的财务比率和经营绩效与同一行业或业务相同的其他公司进行比较。通过同类公司比较分析,财务经理可以评价公司的经营、融资或投资活动的某些方面是否越出常规,从而为调整这些比率采取恰当的行动提供指南,如果这种调整合适的话。两种方法都从财务的视角研究一个公司究竟有什么不同,但两种方法都不能告诉我们这种不同是积极正面的还是消极负面的。例如,假设一个公司的流动比率是随时间而提高,这可能意味着该公司在过去一直面临流动性问题,一直在纠正这些问题;或者它也可能意味着该公司已经在管理流动资产和负债方面变得更低效。同类公司比较分析中也存在类似的争论。一个公司的流动比率低于同类公司,也许是它在管理流动资产和负债方面更具效率,也可能是它面临流动性问题。没有哪种方法告诉我们某个比率是好还是坏。两种方法只是表明有些东西存在差异,并告诉我们去哪里寻找。 2.所谓的“同店销售”是像沃尔玛和希尔斯之类的十分分散的公司的

一项重要指标,顾名思义,分析同店销售就是比较同样的店铺或餐馆在两个不同的时间点上的销售额。为什么公司总是关注同店销售而不是总销售? 答:如果一家公司通过开设新店来不断增长,那么可以推测其总收入将上升。比较两个不同时点的总销售额可能会误导。同店销售方法只看在特定时期开设的店铺的销售额控制了这一误差。 3.为什么多数长期财务计划都从销售预测开始?或者说,为什么未来销售额是关键? 答:理由是,最终,消费是商业背后的驱动力。一个企业的资产、雇员,事实上,几乎企业经营和融资的所有方面都是直接或间接地支持销售。换种说法,一个企业对资本资产、雇员、存货以及融资的未来需求都由它的未来销售所决定。 4.本章利用Rosengarten公司说明EFN的计算,Rosengarten的ROE 约为7.3%,利润再投资率约为67%,如果你为Rosengarten计算可持续增长率,会发现它只有 5.14%,而我们在计算EFN时所使用的增长率为25%,这可能吗?(提示:有可能。如何实现?) 答:可持续增长公式的两个假设是,公司并不想出售新的股票,以及财务政策是固定的。如果公司增加外部股权,或提高其债务权益比率,它的增长速度可以比可持续增长率更高。当然,如果公司改变其股利政策,提高留成比例,或其总资产周转率提高,它的增长速度也可以快于它的销售净利率提高的速度。 5. Broslofski公司每年都维持一个正的留存比率,并保持负债权益比

公司理财精要版知识点归纳

第一章.公司理财导论 1.企业组织形态:单一业主制、合伙制、股份公司(所有权和管理相分离、相对容易转让 所有权、对企业债务负有限责任,使企业融资更加容易。企业寿命不受限制,但双重课税) 2.财务管理的目标:为了使现有股票的每股当前价值最大化。或使现有所有者权益的市场 价值最大化。 3.股东与管理层之间的关系成为代理关系。代理成本是股东与管理层之间的利益冲突的成 本。分直接和间接。 4.公司理财包括三个领域:资本预算、资本结构、营运资本管理 第二章. 1.在企业资本结构中利用负债成为“财务杠杆”。 2.净利润与现金股利的差额就是新增的留存收益。 ¥ 3.来自资产的现金流量=经营现金流量(OCF)-净营运资本变动-资本性支出 =EBIT+折旧-税 5.净资本性支出=期末固定资产净值-期初固定资产净值+折旧 6.流向债权人的现金流量=利息支出-新的借款净额 7.流向股东的现金流量=派发的股利-新筹集的净权益 第三章 1.现金来源:应付账款的增加、普通股本的增加、留存收益增加 ) 现金运用:应收账款增加、存货增加、应付票据的减少、长期负债的减少 2.报表的标准化:同比报表、同基年度财报 =边际利润(经营效率)X总资产周转率(资产使用效率)X权益乘数(财务杠杆) 4.为何评价财务报表: 内部:业绩评价。外部:评价供应商、短期和长期债权人和潜在投资者、信用评级机构。第四章. 1.制定财务计划的过程的两个维度:计划跨度和汇总。 【 2.一个财务计划制定的要件:销售预测、预计报表、资产需求、筹资需求、调剂、经济假设。 3.销售收入百分比法: 提纯率=再投资率=留存收益增加额/净利润=1-股利支付率 资本密集率=资产总额/销售收入 4.内部增长率=(ROAXb)/(1-ROAXb) 可持续增长率=ROE/(1-ROEXb):企业在保持固定的债务权益率同时没有任何外部权益筹资的情况下所能达到的最大的增长率。是企业在不增加财务杠杆时所能保持的最大的增长率。(如果实际增长率超过可持续增长率,管理层要考虑的问题就是从哪里筹集资金来支持增长。如果可持续增长率始终超过实际增长率,银行家最好准备讨论投资产品,因为管理层的问题是怎样处理所有的这些富余的现金。) 5.。 6.增长率的决定因素

中央财经大学公司理财中文版第九版第二章答案

第2章会计报表与现金流 是非题:所有的资产在付出某种代价的情况下都具有流动性。请1. 解释。 答:正确。所有资产都可以以某种价格转换为现金。然而,当我们 提到流动性资产的时候,一个附加的假设变得很重要,这个假设是 资产可以以市场价值或接近市场价值的价格转换成现金。 为什么标准的利润表上列示的收入和成本不代表当期实际的现金2. 流入和现金流出? 答:财务会计里面的确认原则和匹配原则要求将收入和产生收入相 关的费用在收入过程实际完成的时候就记录下来,而不必等到收到 现金或支付账单的时候。我们要注意到这种方式并不必然是正确的,

主要取决于会计师的选择。 在会计现金流量表上,最后一栏表示什么?这个数字对于分析一3. 家公司有何用处? 答:最后一栏的数据显示了资产负债表上现金余额的变化。既然如此,它对于分析一个公司来说并不是一个有用的数据。 财务现金流量表与会计现金流量表有何不同?哪个对于公司分析4. 者更有用? 答:主要的不同在于对利息费用的处理,会计现金流量表将利息视 为经营现金流,而财务现金流量将其视为融资现金流。会计现金流 量的逻辑是,既然利息列支在利润表上,而利润表显示的是一定时.期内企业的经营状况,因此利息也就是经营性的现金流。而事实上,

利息是一种融资费用,是公司选择债务融资还是股权融资的结果,我们将在以后的章节中有更为详细的讲解。相比两种现金流量表,财务现金流量表以其正确对待利息费用而成为分析公司业绩的更恰当的方法。 按照会计规定,一家公司的负债有可能超过资产,所有者权益为5.负,这种情况在市场价值上有没有可能发生?为什么? 答:市场的价值不可能为负。假设有一股股票,价格为负的美元,20这意味着如果你买入股,你不仅得到了股票,而且还得到了一张100美元的现金支票,那么你会想买入多少股呢?更一般的情形是,1200根据公司破产和个人破产法,个人或公司的净资产不能为负,这意味着从市场价值的角度看,负债不可能超过资产。

中央财经大学公司理财中文版第九版第二章答案

第2章会计报表与现金流 1.是非题:所有的资产在付出某种代价的情况下都具有流动性。请解释。 答:正确。所有资产都可以以某种价格转换为现金。然而,当我们提到流动性资产的时候,一个附加的假设变得很重要,这个假设是资产可以以市场价值或接近市场价值的价格转换成现金。 2.为什么标准的利润表上列示的收入和成本不代表当期实际的现金流入和现金流出? 答:财务会计里面的确认原则和匹配原则要求将收入和产生收入相关的费用在收入过程实际完成的时候就记录下来,而不必等到收到现金或支付账单的时候。我们要注意到这种方式并不必然是正确的,主要取决于会计师的选择。 3.在会计现金流量表上,最后一栏表示什么?这个数字对于分析一家公司有何用处? 答:最后一栏的数据显示了资产负债表上现金余额的变化。既然如此,它对于分析一个公司来说并不是一个有用的数据。 4.财务现金流量表与会计现金流量表有何不同?哪个对于公司分析者更有用?

答:主要的不同在于对利息费用的处理,会计现金流量表将利息视为经营现金流,而财务现金流量将其视为融资现金流。会计现金流量的逻辑是,既然利息列支在利润表上,而利润表显示的是一定时期内企业的经营状况,因此利息也就是经营性的现金流。而事实上,利息是一种融资费用,是公司选择债务融资还是股权融资的结果,我们将在以后的章节中有更为详细的讲解。相比两种现金流量表,财务现金流量表以其正确对待利息费用而成为分析公司业绩的更恰当的方法。5.按照会计规定,一家公司的负债有可能超过资产,所有者权益为负,这种情况在市场价值上有没有可能发生?为什么? 答:市场的价值不可能为负。假设有一股股票,价格为负的20美元,这意味着如果你买入100股,你不仅得到了股票,而且还得到了一张1200美元的现金支票,那么你会想买入多少股呢?更一般的情形是,根据公司破产和个人破产法,个人或公司的净资产不能为负,这意味着从市场价值的角度看,负债不可能超过资产。 6.为什么说在一个特定的期间内资产的现金流量为负不一定不好?答:例如,对于一个正在迅速扩张的成功企业来说,它的资本性支出将会很大,这可能会导致出现负的现金流。通常情况下,真正重要的是钱是不是被明智地使用,而不是资产产生的现金流是正或是负。 7.为什么说在一个特定的期间内经营性现金流量为负不一定不好?

公司理财精要版计算题复习课程

公司理财精要版计算 题

可持续增长 假设下列比率是固定的,可持续增长率是多少? 总资产周转率 =1.40 利润率=7.6% 权益乘数=1.50 股利支付比率=25%

ERT 公司资产负债表(截至2005年12月31日) 资产 负债和所有者权益 流动资产 流动负债 现金 25000 应付账款 65000 应收账款 43000 应付票据 9000 存货 76000 合计 74000 合计 144000 长期债务 156000 固定资产 所有者权益 厂房和设备净值 364000 普通股和股本溢价 21000 留存收益 257000 合计 278000 资产总计 508000 负债和所有者权益总计 508000 A. 如果该企业以完全产能运营且没有发行任何新的债务或权益,要支持20%销售收入增长率所需外部融资是多少? B. 假设该企业2005年仅以80%产能在运营。此时EFN 是多少? C. 假设该企业希望它的负债-权益比率固定,此时的EFN 是多少? 永久生命保险公司正在向你推荐一项保险政策,该政策规定,公司将永久性地每年向你和你的后代支付15 000美元。 a 、如果必要的投资收益率为8%时,你愿意以什么价格购买该保险? 1. 187500美元 2. 178500美元 3. 158700美元 4.185700美元 b 、假定该保险公司告诉你这项保险的价格为19 5000美元,请你计算利率为多少? 1. 6.79% 2. 7.96% 3. 7.69% 4. 9.76%

南加利福尼亚出版公司正在决定是否修订其畅销的一本教材。他们估计,修订工作的成本为5万美元,由于销售增加而产生的现金流第1年为1.2万美元,在以后的年度中,预计该现金流将每年增长6%。5年后该教材将推出市场。假定初始成本现在就需要支付,而收入在每年的年末实现。如果公司的必要报酬率为11%,试问该教材由于销售增加产生的现金流的现值为多少?公司是否应该修订该教材? 1. 49,398.78;不修订 2. 49,398.78;修订 3. 59,398.78;不修订 4. 59,398.78;修订 一当地财务公司对1年期贷款的利率报价为14%。因此,如果你借入20 000美元,年利息将为2 800美元。因为你在1年后必须支付22 800美元,财务公司要求你在以后的12个月每月支付1900美元(22 800/12)。 a.这笔贷款的利率是14%吗? 1.是 2.不是 b. 计算这笔贷款的月利率。 1. 2.076% 2. 1.076% 3. 3.076% 4. 4.076% c. 计算名义年利率(APR). 1. 24.91% 2. 30.91% 3. 3 4.91% 4. 8.91% d. 计算实际年利率(EAR) 1. 7.96% 2. 47.96% 3. 27.96% 4. 97.96%

罗斯公司理财第九版课后习题答案中文版

申明:转载自 https://www.sodocs.net/doc/c37215082.html,/nkmpacc2010@126/blog/static/164604276201102214 836994/ 第一章 1.在所有权形式的公司中,股东是公司的所有者。股东选举公司的董事会,董事会任命该公司的管理层。企业的所有权和控制权分离的组织形式是导致的代理关系存在的主要原因。管理者可能追求自身或别人的利益最大化,而不是股东的利益最大化。在这种环境下,他们可能因为目标不一致而存在代理问题。 2.非营利公司经常追求社会或政治任务等各种目标。非营利公司财务管理的目标是获取并有效使用资金以最大限度地实现组织的社会使命。 3.这句话是不正确的。管理者实施财务管理的目标就是最大化现有股票的每股价值,当前的股票价值反映了短期和长期的风险、时间以及未来现金流量。 4.有两种结论。一种极端,在市场经济中所有的东西都被定价。因此所有目标都有一个最优水平,包括避免不道德或非法的行为,股票价值最大化。另一种极端,我们可以认为这是非经济现象,最好的处理方式是通过政治手段。一个经典的思考问题给出了这种争论的答案:公司估计提高某种产品安全性的成本是30美元万。然而,该公司认为提高产品的安全性只会节省20美元万。请问公司应该怎么做呢?” 5.财务管理的目标都是相同的,但实现目标的最好方式可能是不同的,因为不同的国家有不同的社会、政治环境和经济制度。

6.管理层的目标是最大化股东现有股票的每股价值。如果管理层认为能提高公司利润,使股价超过35美元,那么他们应该展开对恶意收购的斗争。如果管理层认为该投标人或其它未知的投标人将支付超过每股35美元的价格收购公司,那么他们也应该展开斗争。然而,如果管理层不能增加企业的价值,并且没有其他更高的投标价格,那么管理层不是在为股东的最大化权益行事。现在的管理层经常在公司面临这些恶意收购的情况时迷失自己的方向。 7.其他国家的代理问题并不严重,主要取决于其他国家的私人投资者占比重较小。较少的私人投资者能减少不同的企业目标。高比重的机构所有权导致高学历的股东和管理层讨论决策风险项目。此外,机构投资者比私人投资者可以根据自己的资源和经验更好地对管理层实施有效的监督机制。 8.大型金融机构成为股票的主要持有者可能减少美国公司的代理问题,形成更有效率的公司控制权市场。但也不一定能。如果共同基金或者退休基金的管理层并不关心的投资者的利益,代理问题可能仍然存在,甚至有可能增加基金和投资者之间的代理问题。 9.就像市场需求其他劳动力一样,市场也需求首席执行官,首席执行官的薪酬是由市场决定的。这同样适用于运动员和演员。首席执行官薪酬大幅度增长的一个主要原因是现在越来越多的公司实行股票报酬,这样的改革是为了更好的协调股东和管理者的利益。这些报酬有时被认为仅仅对股票价格上涨的回报,而不是对管理能力的奖励。或许在将来,高管薪酬仅用来奖励特别的能力,即,股票价格的上涨增加了超过一般的市场。 10.最大化现在公司股票的价格和最大化未来股票价格是一样的。股票的价值取决于公司未来所有的现金流量。从另一方面来看,支付大量的现金股利给股东,股票的预期价格将会上升。

公司理财罗斯中文版07

第7 章 利率 ◆本章复习与自测题 7.1 债券价值 Microgates产业公司的债券票面利率为10%,面值为1 000美元,每半年支付一次利息,而且该债券的到期期限为20年。 如果投资者要求12%的收益率,那么,该债券的价值是多少?有效年收益率是多少? 7.2 债券收益率 Macrohard公司的债券票面利率为8%,每半年付息一次,面值为1 000美元,而且到期期限为6年。如果目前这张债券卖911.37美元,则到期收益率是多少?有效年收益率是多少? ◆本章复习与自测题解答 7.1 因为债券的票面利率是10%,而投资者要求12%的报酬,因此我们知道此债券必须折价出售。注意,因为债券每半 年付息一次,因此每6个月的票面利息是100美元/2 = 50美元,每6个月的必要报酬率是12%/2 = 6%。最后,债券的到期期限是20年,因此,共有40期。 债券的价值等于在接下来的40期中,每期50美元的现值,加上20年后的1 000美元面值的现值: 债券价值= 50美元×[1-1/1.0640 ]/0.06 + 1 000美元/1.0640 = 50美元×15.04630 + 1 000美元/10.2857 = 849.54美元 请注意,我们以每期6%的贴现率将1 000美元贴现了40期,而不是以12%的贴现率贴现20期。因为此债券的有效年收益率是 1.062 -1 = 1 2.36%,而不是12%。因此,我们也可以以每年12.36%将1 000美元贴现20期,答案是一样的。 7.2 债券的现金流量的现值就是它的目前价格911.37美元。票面利息是每半年40美元,共12期,而且面值是1 000美元, 因此,债券的收益率就是下式中的未知贴现率: 911.37美元= 40美元×[1-1/(1 + r)12 ]/r+ 1 000美元/(1 + r)12 这张债券以折价出售,因为票面利率为8%,收益率必定大于8%。 如果利用逐次测试法,我们可能会用12%(即每6个月6%)进行测试: 债券价值= 40美元×[1-1/1.0612]/0.06 + 1 000美元/1.0612 = 832.32美元 结果小于实际价值,因此贴现率太高了。现在我们知道贴现率应该介于8%和12%之间。再利用一次逐次测试法,结果答案是10%,也就是每半年5%。 按照惯例,债券的到期收益率应公布为2×5% = 10%,因此有效收益率为1.052-1 = 10.25%。

相关主题