《三天搞定Python基础概念之第二天》中文版

Day2,即第二篇主要是讲一些偏计算的Library的使用,也就是numpy,scipy,sympy和matplotlib。

前言: 首先,非常感谢Jiang老师将其分享出来!本课件非常经典! 经过笔者亲测,竟然确实只要三天,便可管中窥豹洞见Python及主要库的应用。实属难得诚意之作! 其次,只是鉴于Jiang老师提供的原始课件用英文写成,而我作为Python的爱好者计算机英文又不太熟练,讲义看起来比较慢,为了提高自学课件的效率,故我花了点时间将其翻译成中文,以便将来自己快速复习用。 该版仅用于个人学习之用。 再次,译者因工作中需要用到数据分析、风险可视化与管理,因此学习python,翻译水平有限,请谅解。 在征得原作者Yupeng Jiang老师的同意后,现在我将中文版本分享给大家。  

作者:Dr.Yupeng Jiang

翻译:Murphy Wan

大纲( Outline)

  • 第1天:Python和科学编程介绍。 Python中的基础知识:

    • 数据类型
    • 控制结构
    • 功能
    • I/O文件
  • 第2天:用Numpy,Scipy,Matplotlib和其他模块进行计算。 用Python解决一些数学问题。

  • 第3天:时间序列:用Pandas进行统计和实际数据分析。 随机和蒙特卡罗。

——————————以下为英文原文————————————-

  • Day 1: Introduction to Python and scientific programming. Basics in Python: data type, contro structures, fu nctions, l/O file.
  • Day 2: Computation with Numpy, Scipy, Matplotlib and other modules. Solving some maths problems with Python.
  • Day 3: Time series: statistics and real data analysis with Pandas. Stochastics and Monte Carlo.
 

第二天的内容

Import modules

Numpy

Scipy

Matplotlib

Sympy

导入模块 (Import modules)

  • 可以通过输入import关键字来导入模块
import numpy 
  • 或者使用简称,即将模块通过as关键字来命名一个简称
import numpy as np 
  • 有时您不必导入整个模块,就像
from scipy.stats import norm 

——————————以下为英文原文————————————-

  • One can import a module by typing
import numpy 
  • or for short by
2import numpy as np 
  • Sometimes you do not have to import the whole module, like
from scipy.stats import norm 

练习 (Exercise)

  • 尝试导入模块时间,并使用它来获取计算机运行特定代码所需的时间。
import timeit def funl (x, y):            return x**2 + y**3  t_start  =  timeit.default_timer() z =  funl(109.2, 367.1) t_end  =   timeit.default_timer()  cost  =  t_end -t_start print ( 'Time cost of funl is  %f' %cost) 

——————————以下为英文原文————————————-

  • Try to import the module timeit and use it to obtain how long you computer takes to run a specific code.
import timeit def  funl (x, y):       return x**2 + y**3 t_start  =  timeit.default_timer() z =  funl(109.2, 367.1) t_end  =   timeit.default_timer() cost  =  t_end -t_start print ( 'Time cost of funl is  %f' %cost) 

我们会遇到的模块

  • NumPy:多维数组的有效操作。 高效的数学函数。

  • Matplotlib:可视化:2D和(最近)3D图

  • SciPy:大型库实现各种数值算法,例如:

    • 线性和非线性方程的解
    • 优化
    • 数值整合
  • Sympy:符号计算(解析的 Analytical)

  • Pandas:统计与数据分析(明天)

——————————以下为英文原文————————————-

Modules we will encounter

  • NumPy: Efficient manipulation of multidimensional arrays. Efficient mathematical functions.
  • Matplotlib: Visualisations: 2D and (recently) 3D plots
  • SciPy: Large library implementing various numerical algorithms, e.g.:
    • solution of linear and nonlinear equations
    • optimisation
    • numerical integration
  • Sympy: Symbolic computation (Analytical).
  • Pandas: Statistical and data analysis(tomorrow)

Numpy

ndarray类型

  • NumPy提供了一种新的数据类型:ndarray(n维数组)。
    • 与元组和列表不同,数组只能存储相同类型的对象(例如只有floats或只有ints)
    • 这使得数组上的操作比列表快得多; 此外,阵列占用的内存少于列表。
    • 数组为列表索引机制提供强大的扩展。

——————————以下为英文原文————————————-

The ndarray type

  • NumPy provides a new data type: ndarray (n-dimensional array).

    • Unlike tuples and lists, arrays can only store objects of the same type (e.g. only floats or only ints)
    • This makes operations on arrays much faster than on lists; in addition, arrays take less memory than lists.
    • Arrays provide powerful extensions to the list indexing mechanism.

创建ndarray

  • 我们导入Numpy(在脚本的开头或终端):
import numpy as np 
  • 然后我们创建numpy数组:
In [1] : np.array([2, 3, 6, 7])    Out[l] : array([2, 3, 6, 7])    In [2] : np.array([2, 3, 6, 7.])    Out [2] :  array([ 2.,  3.,  6., 7.])  <- Hamogenaous    In  [3] :  np.array( [2,  3,  6,  7+ij])    Out [3] :  array([ 2.+O.j,  3.+O.j,  6.+O.j,  7.+1.j]) 

——————————以下为英文原文————————————-

Create the ndarray

  • We import Numpy (at the beginning of the script or in the terminal):
import numpy as np 
  • Then we create numpy arrays:
In [1] : np.array([2, 3, 6, 7])    Out[l] : array([2, 3, 6, 7])    In [2] : np.array([2, 3, 6, 7.])    Out [2] :  array([ 2.,  3.,  6., 7.])  <- Hamogenaous    In  [3] :  np.array( [2,  3,  6,  7+ij])    Out [3] :  array([ 2.+O.j,  3.+O.j,  6.+O.j,  7.+1.j]) 

创建均匀间隔的数组

  • arange:
in[1]:np.arange(5) Out [l]:array([0,1,2,3,4]) 

range(start, stop, step)的所有三个参数即起始值,结束值,步长都是可以用的 另外还有一个数据的dtype参数

  in[2]:np.arange(10,100,20,dtype = float)   Out [2]:array([10.,30.,50.,70.,90.]) 
  • linspace(start,stop,num)返回数字间隔均匀的样本,按区间[start,stop]计算:
  in[3]:np.linspace(0.,2.5,5)            Out [3]:array([0.,0.625,1.25,1.875,2.5])    

这在生成plots图表中非常有用。

  • 注释:即从0开始,到2.5结束,然后分成5等份

多维数组矩阵 (Matrix by multidimensional array)

In [1] : a = np.array([[l, 2, 3]  [4, 5, 6]])                           ^ 第一行 (Row 1) In  [2] : a Out [2] : array([[l, 2,  3] ,   [4,  5,  6]])  In  [3] : a.shape  #<- 行、列数等 (Number of rows, columns etc.) Out [3] : (2,3)  In  [4] : a.ndim   #<- 维度数  (Number of dimensions) Out [4] : 2  In  [5] : a,size   #<- 元素数量 (Total number of elements) Out [5] : 6 

形状变化 (Shape changing)

import numpy as np  a = np .arange(0, 20, 1) #1维 b = a.reshape((4, 5))   #4行5列 c = a.reshape((20, 1))  #2维 d = a.reshape((-1, 4))  #-1:自动确定 #a.shape =(4, 5) #改变a的形状 

Size(N,),(N,1)和(1,N)是不同的!!!

  • Size(N, )表示数组是一维的。
  • Size(N,1)表示数组是维数为2, N列和1行。
  • Size(1,N)表示数组是维数为2, 1行和N列。

让我们看一个例子,如下

例子 (Example)

import numpy as np  a = np.array([1,2,3,4,5]) b = a.copy ()  c1 =  np.dot(np.transpose(a), b) print(c1) c2  = np.dot(a, np.transpose(b)) print(c2)  ax  =  np.reshape(a, (5,1)) bx  =  np.reshape(b, (1,5)) c = np.dot(ax, bx) print(c) 

使用完全相同的元素填充数组 (Filling arrays with identical elements)

In [1] : np.zeros(3)              # zero(),全0填充数组 Out[l] : array([ O., 0., 0.])  In [2] : np.zeros((2, 2), complex) Out[2] : array([[ 0.+0.j, 0.+0.j],                                 [ 0.+O.j, 0.+0.j]])  In [3] : np.ones((2, 3))          # ones(),全1填充数组 Out[3] : array([[ 1., 1., 1.],                 [ 1., 1., 1.]]) 

使用随机数字填充数组 (Filling arrays with random numbers)

  • rand: 0和1之间均匀分布的随机数 (random numbers uniformly distributed between 0 and 1)
   In [1] : np.random.rand(2, 4)       Out[1] : array([[ 0.373767 , 0.24377115, 0.1050342 , 0.16582644] ,                     [ 0.31149806, 0.02596055, 0.42367316, 0.67975249l]) 
  • randn: 均值为0,标准差为1的标准(高斯)正态分布 {standard normal (Gaussian) distribution with mean 0 and variance 1}
  In [2]: np.random.randn(2, 4)     Out[2]: array([[ O.87747152, 0.39977447, -0.83964985, -1.05129899],                   [-1.07933484, 0.49448873,   -1.32648606, -0.94193424]]) 
  • 其他标准分布也可以使用 (Other standard distributions are also available.)

数组切片(1D) (Array sliciing(1D))

  • 以格式start:stop可以用来提取数组的片段(从开始到不包括stop)
In [77]:a = np.array([0,1,2,3,4]) Out[77]:array([0,1,2,3,4])  In [78]:a [1:3]        #<--index从0开始 ,所以1是第二个数字,即对应1到3结束,就是到第三个数字,对应是2 Out[78]:array([1,2]) 
  • start可以省略,在这种情况下,它被设置为零(Notes:貌似留空更合适):
In [79]:a [:3] Out[79]:array([0,1,2]) 
  • stop也可以省略,在这种情况下它被设置为数组长度:
In [80]:a [1:] Out[80]:array([1,2,3,4]) 
  • 也可以使用负指数,具有标准含义:
In [81]:a [1:-1] Out[81]:array([1,2,3])      # <-- stop为-1表示倒数第二个数 

数组切片(1D)

  • 整个数组:a或a [:]
In [77]:a = np.array([0,1,2,3,4]) Out[77]:array([0,1,2,3,4]) 
  • 要获取,例如每个其他元素,您可以在第二个冒号后面指定第三个数字(步骤(step)):
In [79]:a [::2] Out[79]:array([0,2,4])   In [80]:a [1:4:2] Out[80]:array([l,3]) 
  • -1的这个步骤可用于反转数组:
In [81]:a [::-1] Out[81]:array([4,3,2,1,0]) 

数组索引(2D) (Array indexing (2D))

  • 对于多维数组,索引是整数元组:(For multidimensional arrays, indices are tuples of integers:)
In [93] :  a = np.arange(12) ; a.shape =  (3,  4);  a Out[93] :  array([[0,  1,  2,  3],                   [4,  5,  6,  7],                   [8, 9,  10, 11]])  In [94] : a[1,2] Out[94] : 6  In [95] : a[1,-1] Out[95] : 7 

数组切片(2D):单行和列 (Array slicing (2D): single rows and columns)

  • 索引的工作与列表完全相同:(Indexing works exactly like for lists:)
In [96] : a = np.arange(12); a.shape = (3, 4); a    Out[96] : array([[0, 1, 2, 3],                  [4, 5, 6, 7],                  [8, 9,10,11]])  In [97] : a[:,1] Out[97] : array([1,5,9])  In [98] : a[2,:] Out[98] : array([ 8, 9, 10, 11])  In [99] : a[1][2] Out[99] : 6 
  • 不必明确提供尾随的冒号:(Trailing colons need not be given explicitly:)
In [100] : a[2] Out[100] : array([8,9,10,11])  

数组索引 (Array indexing)

 >>> a[0,3:5] array( [3,4] )  >>> a[4:,4:] array([[44, 45],         [54, 55]])  >>> a[:,2] array([2,12,22,32,42,52])  >>> a[2: :2, ::2] array([[20, 22, 24]               [40, 42, 44]])  
mofang.jpg

副本(copy)和视图(view)

  • 采用标准的list切片为其建立副本
  • 采用一个NumPy数组的切片可以在原始数组中创建一个视图。 两个数组都指向相同的内存。因此,当修改视图时,原始数组也被修改:
In [30] : a = np.arange(5); a Out[30] : array([0, 1, 2, 3, 4])  In [31] : b = a[2:]; b Out[31] : array([2, 3, 4])  In [32] : b[0] = 100 In [33] : b  Out[33] : array([l00, 3, 4]) In [34] : a Out[34] : array([0,1,100,3,4]) 

副本和视图 (Copies and views)

  • 为避免修改原始数组,可以制作一个切片的副本 (To avoid modifying the original array, one can make a copy of a slice:)
In [30] : a = np.arange(5); a Out[30] : array([0, 1, 2, 3, 4])  In [31] : b = a[2:].copy(); b Out[31] : array([2, 3, 4])  In [32] : b[0] = 100 In [33] : b Out[33] : array([1OO, 3, 4])  In [34] : a  Out[34] : array([ 0,  1.  2,  3,  4])  

矩阵乘法 (Matrix multiplication)

  • 运算符 * 表示元素乘法,而不是矩阵乘法:(The * operator represents elementwise multiplication , not matrix multiplication:)
 In [1]: A = np.array([[1, 2],[3, 4]]) In [2]: A Out[2]: array([[1, 2],                [3, 4]])  In [3]: A * A Out[3]: array([[1, 4],                [9, 16]])             
  • 使用dot()函数进行矩阵乘法:(Matrix multiplication is done with the dot() function:)
 In [4]: np.dot(A, A) Out[4]: array([[ 7, 10],                    [15, 22]])   

矩阵乘法

  • dot()方法也适用于矩阵向量(matrix-vector)乘法:
 In [1]: A Out[1]: array([[1, 2],[3, 4]])  In [2]: x = np.array([10, 20]) In [3]: np.dot(A, x) Out[3]: array([ 50, 110])  In [4]: np.dot(x, A) Out[4]: array([ 70, 100])  

将数组保存到文件 (Saving arrays to files)

  • savetxt()将表保存到文本文件。 (savetxt() saves a table to a text file.)
In  [1]: a = np,linspace(0. 1, 12); a,shape ' (3, 4); a Out [1] : array([[ O.  ,  0.09090909, 0.18181818,  0.27272727], [  0.36363636,  0.45454545, 0.54545455,  0.63636364], [  0.72727273,  0.81818182. 0.90909091,  1.]])  In [2] : np.savetxt("myfile.txt", a) 
  • 其他可用的格式(参见API文档) {Other formats of file are available (see documentation)}

  • save()将表保存为Numpy“.npy”格式的二进制文件 (save() saves a table to a binary file in NumPy “.npy” format.)

  - In [3] : np.save("myfile" ,a)     
  • 生成一个二进制文件myfile .npy,其中包含一个可以使用np.load()加载的文件。 {produces a binary file myfile .npy that contains a and that can be loaded with np.load().}

将文本文件读入数组 (Reading text files into arrays)

  • loadtxt()将以文本文件存储的表读入数组。 (loadtxt() reads a table stored as a text file into an array.)

  • 默认情况下,loadtxt()假定列是用空格分隔的。 您可以通过修改可选的参数进行更改。 以散列(#)开头的行将被忽略。 (By default, loadtxt() assumes that columns are separated with whitespace. You can change this by modifying optional parameters. Lines starting with hashes (#) are ignored.)

  • 示例文本文件data.txt: (Example text file data.txt:)

    |Year| Min temp.| Hax temp.|

    |1990| -1.5 | 25.3|

    |1991| -3.2| 21.2|

  • Code:
   In [1] : tabla = np.loadtxt("data.txt")    In [2] : table    Out[2] :    array ([[ 1.99000000e+03,   -1.50000000e+00,   2.53000000e+01],        [ 1.9910000e+03,  -3.2000000e+00,  2.12000000e+01]  

Numpy包含更高效率的功能

  • Numpy包含许多常用的数学函数,例如:

    • np.log
    • np.maximum
    • np.sin
    • np.exp
    • np.abs
  • 在大多数情况下,Numpy函数比Math包中的类似函数更有效,特别是对于大规模数据。

Scipy (库)

SciPy的结构

  • scipy.integrate – >积分和普通微分方程
  • scipy.linalg – >线性代数
  • scipy.ndimage – >图像处理
  • scipy.optimize – >优化和根查找(root finding)
  • scipy.special – >特殊功能
  • scipy.stats – >统计功能

要加载一个特定的模块,请这样使用, 例如 :

  • from scipy import linalg

线性代数 (Linearalgebra)

  • 线性方程的解 (Solution of linear equations:)
 import numpy as np from scipy import linalg      A = np.random.randn(5, 5) b = np.random.randn(5) x = linalg.solve(A, b)     # A x = b#print(x)     eigen = linalg.eig(A)     # eigens#print(eigen)     det = linalg.det(A)     # determinant     print(det)              
  • linalg的其他有用的方法:eig()(特征值和特征向量),det()(行列式)。{Other useful functions from linalg: eig() (eigenvalues and eigenvectors), det() (determinant). }

数值整合 (Numerical integration)

  • integration.quad是一维积分的自适应数值积分的函数。 (integrate.quad is a function for adaptive numerical quadrature of one-dimensional integrals.)
 import numpy as np from scipy import integrate  def fun(x):     return np.log(x)  value, error = integrate.quad(fun,0,1) print(value) print(error)  
3days_img009_Numerical-integration.jpg

用Scipy进行统计 (Statistics in Scipy)

  • scipy具有用于统计功能的子库,您可以导入它 (scipy has a sub-library for statistical functions, you can import it by)
from scipy import stats 
  • 然后您可以使用一些有用的统计功能。 例如,给出标准正态分布的累积密度函数(Then you are able to use some useful statistical function. For example, the cummulative density function of a standard normal distribution is given like
3days_img010_statistics_in_scipy.jpg
  • 这个包,我们可以直接使用它,如下: (with this package, we can directly use it like)
from scipy import stats y = stats.norm.cdf(1.2) 

优化:数据拟合 (Optimisation: Data fitting)

 import numpy as np from scipy.optimize import curve_fit import matplotlib.pyplot as plt  def func(x, a, b, c):         return a * np.exp(-b * x) + c  x = np.linspace(0, 4, 50) y = func(x, 2.5, 1.3, 0.5) ydata = y+0.2*np.random.normal(size=len(x)) popt, pcov = curve_fit(func, x, ydata) plt.plot(x, ydata, ’b*’) plt.plot(x, func(x, popt[0], /                      popt[1], popt[2]), ’r-’) plt.title(’$f(x)=ae^{-bx}+c$ curve fitting’)  
3days_img011_data_fitting.jpg

优化:根搜索 (Optimisation: Root searching)

 import numpy as np from scipy import optimize  def fun(x):     return np.exp(np.exp(x)) - x**2  # 通过初始化点0,找到兴趣0 (find zero of fun with initial point 0) # 通过Newton-Raphson方法 (by Newton-Raphson) value1 = optimize.newton(fun, 0)  # 通过二分法找到介于(-5,5)之间的 (find zero between (-5,5) by bisection) value2 = optimize.bisect(fun, -5, 5)  

Matplotlib

最简单的制图 (The simplest plot)

  • 导入库需要添加以下内容
 from matplotlib import pyplot as plt  
  • 为了绘制一个函数,我们操作如下 (To plot a function, we do:)
 import numpy as np import matplotlib.pyplot as plt  x = np.linspace(0, 10, 201) #y = x ** 0.5 #plt.plot(x, y) # default plot plt.figure(figsize = (3, 3)) # new fig plt.plot(x, x**0.3, ’r--’) # red dashed plt.plot(x, x-1, ’k-’) # continue plot plt.plot(x, np.zeros_like(x), ’k-’)  
  • 注意:您的x轴在plt.plot函数中应与y轴的尺寸相同。 (Note: Your x-axis should be the same dimension to y-axis in plt.plot function.)
3days_img012_the_simplest_plot.jpg
 

多个制图图例标签和标题 (Mu
ltiple plotting, legends, labels and title)

 import numpy as np import matplotlib.pyplot as plt  x = np.linspace(0, 10, 201) plt.figure(figsize = (4, 4)) for n in range(2, 5):     y = x ** (1 / n)     plt.plot(x, y, label=’x^(1/’ /             + str(n) + ’)’) plt.legend(loc = ’best’) plt.xlabel(’X axis’) plt.ylabel(’Y axis’) plt.xlim(-2, 10) plt.title(’Multi-plot e.g. ’, fontsize = 18)  
3days_img013_multiple_plotting.jpg
  • Forinformations:See
 help(plt.plot)    

绘制子图 (Subplots )

 import numpy as np’ import matplotlib.pyplot as plt  def pffcall(S, K):         return np.maximum(S - K, 0.0) def pffput(S, K):     return np.maximum(K - S, 0.0)      S = np.linspace(50, 151, 100) fig = plt.figure(figsize=(12, 6))    sub1 = fig.add_subplot(121)     # col, row, num     sub1.set_title('Call', fontsize = 18) plt.plot(S, pffcall(S, 100), 'r-', lw = 4) plt.plot(S, np.zeros_like(S), 'black',lw = 1) sub1.grid(True) sub1.set_xlim([60, 120]) sub1.set_ylim([-10, 40])      sub2 = fig.add_subplot(122) sub2.set_title('Put', fontsize = 18) plt.plot(S, pffput(S, 100), 'r-', lw = 4) plt.plot(S, np.zeros_like(S), 'black',lw = 1) sub2.grid(True) sub2.set_xlim([60, 120]) sub2.set_ylim([-10, 40])    
3days_img014_multiple_plotting.jpg
  • Figure: 一个子图的例子
    (注释:这里,可以把Figure,即fig理解为一张大画布,你把它分成了两个子区域(sub1和sub2),然后在每个子区域各画了一幅图。)

在绘制的图上添加文本和注释 (Adding texts to plots)

 import numpy as np from scipy.stats import norm import matplotlib.pyplot as plt  def call(S, K=100, T=0.5, vol=0.6, r=0.05):     d1 = (np.log(S/K) + (r + 0.5 * vol**2) /           *T) / np.sqrt(T) / vol     d2 = (np.log(S/K) + (r - 0.5 * vol**2) /           *T) / np.sqrt(T) / vol     return S * norm.cdf(d1) - K * /     np.exp(-r * T) * norm.cdf(d2)  def delta(S, K=100, T=0.5, vol=0.6, r=0.05):     d1 = (np.log(S/K) + (r + 0.5 * vol**2)/           *T) / np.sqrt(T) / vol     return norm.cdf(d1)  

(Code continues:)

 S = np.linspace(40, 161, 100) fig = plt.figure(figsize=(7, 6)) ax = fig.add_subplot(111) plt.plot(S,(call(S)-call(100)),’r’,lw=1) plt.plot(100, 0, ’ro’, lw=1) plt.plot(S,np.zeros_like(S), ’black’, lw = 1) plt.plot(S,call(S)-delta(100)*S- /     (call(100)-delta(100)*100), ’y’, lw = 1)  

(Code continues:)

 ax.annotate(’$/Delta$ hedge’, xy=(100, 0), /             xytext=(110, -10),arrowprops= /             dict(headwidth =3,width = 0.5, /             facecolor=’black’, shrink=0.05)) ax.annotate(’Original call’, xy= /             (120,call(120)-call(100)),xytext/             =(130,call(120)-call(100)),/             arrowprops=dict(headwidth =10,/             width = 3, facecolor=’cyan’, /             shrink=0.05)) plt.grid(True) plt.xlim(40, 160) plt.xlabel(’Stock price’, fontsize = 18) plt.ylabel(’Profits’, fontsize = 18)  
3days_img015_annotation.jpg

两个变量的函数3D制图(3D plot of a function with 2 variables)

 import numpy as np import matplotlib.pyplot as plt from matplotlib import cm from mpl_toolkits.mplot3d import Axes3D  x, y = np.mgrid[-5:5:100j, -5:5:100j] z = x**2 + y**2 fig = plt.figure(figsize=(8, 6)) ax = plt.axes(projection='3d') surf = ax.plot_surface(x, y, z, rstride=1,/                        cmap=cm.coolwarm, cstride=1, /                        linewidth=0) fig.colorbar(surf, shrink=0.5, aspect=5) plt.title('3D plot of $z = x^2 + y^2$')  
3days_img016_3D_plot.jpg

实验3:atplotlib (Lab 3: Matplotlib)

  • 用蓝线绘制以下函数 (Plot the following function with blue line)

    3days_img017_1.jpg
    • 然后用红点标记坐标(1,2) (Then mark the coordinate (1, 2) with a red point.)
  • 使用np.linspace()使t ∈ [0,2π]。 然后给 (Use np.linspace0 to make t ∈ [0,2π]. Then give)

3days_img017_2.jpg
  • 针对X绘Y。 在这个情节中添加一个称为“Heart”的标题。 (Plot y against x. Add a title to this plot which is called “Heart” .)
  • 针对x∈[-10,10], y∈[-10,10], 绘制3D函数 (Plot the 3D function for x∈[-10,10], y∈[-10,10])

    3days_img017_3.jpg

Sympy

符号计算 (Symbolic computation)

  • 到目前为止,我们只考虑了数值计算。 (So far, we only considered the numerical computation.)

  • Python也可以通过模块表征进行符号计算。(Python can also work with symbolic computation via module sympy.)

  • 符号计算可用于计算方程,积分等的显式解。 (Symbolic computation can be useful for calculating explicit solutions to equations, integrations and so on.)

声明一个符号变量 (Declare a symbol variable)

 import sympy as sy  #声明x,y为变量 x = sy.Symbol('x') y = sy.Symbol('y') a, b = sy.symbols('a b')  #创建一个新符号(不是函数 f = x**2 + 2 - 2*x + x**2 -1 print(f) #自动简化 g = x**2 + 2 - 2*x + x**2 -1 print(g) 

符号的使用1:求解方程 (Use of symbol 1: Solve equations)

 import sympy as sy  x  = sy.Symbol ('x') y  = sy.Symbol('y')  # 给定[-1,1]  (give [-1, 1]) print(sy.solve
(x**2 - 1))  # 不能证解决 (no guarantee for solution) print(sy.solve(x**3  +  0.5*x**2 - 1))  # 用x的表达式表示y     (exepress x in terms of y) print (sy.solve(x**3  +  y**2))  # 错误:找不到算法 (error:  no  algorithm  can  be  found) print(sy.solve(x**x + 2*x - 1)) 

符号的使用2:集成 (Use of symbol 2: Integration)

import sympy as sy  x = sy.Symbol('x') y = sy.Symbol( 'y') b = sy.symbols ( 'a b')  # 单变量 single  variable f = sy.sin(x) + sy.exp(x) print(sy.integrate(f, (x,  a,  b))) print(sy.integrate(f, (x,  1,  2))) print(sy.integrate(f, (x,  1.0,2.0))) # 多变量 multi variables g = sy.exp(x) + x * sy.sin(y) print(sy.integrate(g, (y,a,b))) 

符号的使用3:分化 (Use of symbol 3: Differentiation)

import sympy as sy x =  sy.Symbol( 'x') y =  sy.Symbol( 'y') # 单变量 (single variable) f = sy.cos(x) + x**x print(sy . diff (f ,  x)) #  多变量  (multi variables) g = sy.cos(y) * x + sy.log(y) print(sy.diff (g,  y)) 
 第二天结束,辛苦了  

王小波:人性的逆转

有位西方的发展学者说:贫穷是一种生活方式。言下之意是说,有些人受穷,是因为他不想富裕。这句话是作为一种惊世骇俗的观点提出的,但我狭隘的人生经历却证明此话大有道理。对于这句话还可以充分地推广:贫困是一种生活方式,富裕是另一种生活方式;追求聪明是一种人生的态度,追求愚蠢则是另一种生活态度。在这个世界上,有一些人在追求快乐,另一些人在追求痛苦;有些人在追求聪明,另一些人在追求愚蠢。这种情形常常能把人彻底搞糊涂。

洛克先生以为,人人都追求快乐,这是不言自明的。以此为基础,他建立了自己的哲学大厦。斯宾诺莎也说,人类行为的原动力是自我保存。作为一个非专业的读者,我认为这是同一类的东西,认为人趋利而避害,趋乐而避苦,这是伦理学的根基。以此为基础,一切都很明白。相比之下,我们民族的文化传统大不相同,认为礼高于利,义又高于生,这样就创造了一种比较复杂的伦理学。由此产生了一个矛盾,到底该从利害的角度来定义崇高,还是另有一种先验的东西,叫做崇高–举例来说,孟子认为,人皆有恻隐之心,这是人先天的良知良能,这就是崇高的根基。我也不怕人说我是民族虚无主义,反正我以为前一种想法更对。从前一种想法里产生富裕,从后一种想法里产生贫困;从前一种想法里产生的总是快乐,从后一种想法里产生的总是痛苦。我坚定不移地认为,前一种想法就叫做聪明,后一种想法就叫做愚蠢。笔者在大学里学的是理科,凭这样的学问底子,自然难以和专业哲学家理论,但我还是以为,这些话不能不说。

对于人人都追求快乐这个不言自明的道理罗素却以为不尽然,他举受虐狂作为反例。当然,受虐狂在人口中只占极少数。但是受虐却不是罕见的品行。七十年代,笔者在农村插队,在学大寨的口号鞭策下,劳动的强度早已超过了人力所能忍受的极限,但那些工作却是一点价值也没有的。对于这些活计,老乡们概括得最对:没别的,就是要给人找些罪来受。但队干部和积极分子们却乐此不疲,干得起码是不比别人少。学大寨的结果是使大家变得更加贫穷。道理很简单:人干了艰苦的工作之后,就变得很能吃,而地里又没有多长出任何可吃的东西。这个例子说明,人人都有所追求,这个道理是不错的,但追求的却可以是任何东西:你总不好说任何东西都是快乐吧。

人应该追求智慧,这对西方人来说是很容易接受的道理;苏格拉底甚至把求知和行善画上了等号。但是中国人却说”难得糊涂”,仿佛是希望自己变得笨一点。在我身上,追求智慧的冲动比追求快乐的冲动还要强烈,因为这个原故,在我年轻时,总是个问题青年、思想改造的重点对象。我是这么理解这件事的:别人希望我变得笨一些。谢天谢地,他们没有成功。人应该改变自己,变成某种样子,这大概是没有疑问的。有疑问的只是应该变聪明还是变笨。像这样的问题还能举出一大堆,比方说,人(尤其是女人)应该更漂亮、更性感一些,还是更难看、让人倒胃一些;对别人应该更粗暴、更野蛮一些,还是更有礼貌一些;等等。假如你经历过中国的七十年代,就会明白,在生活的每一个方面,都有不同的答案。你也许会说,每个国家都有自己的国情,每个时代都有自己的风尚,但我对这种话从来就不信。我更相信乔治·奥威尔的话:一切的关键就在于必须承认一加一等于二;弄明白了这一点,其他一切全会迎刃而解。

我相信洛克的理论。人活在世上,趋利趋乐暂且不说,首先是应该避苦避害。这种信念来自我的人生经验:我年轻时在插队,南方北方都插过。谁要是有同样的经历就会同意,为了谋生,人所面临的最大任务是必须搬动大量沉重的物质:这些物质有时是水,有时是粪土,有时是建筑材料,等等。到七十年代中期为止,在中国南方,解决前述问题的基本答案是:一根扁担。在中国的北方则是一辆小车。我本人以为,这两个方案都愚不可及。在前一个方案之下,自肩膀至脚跟,你的每一寸肌肉、每一寸骨骼都在百十公斤重物的压迫之下,会给你带来腰疼病、腿疼病。后一种方案比前种方案强点不多,虽然车轮承担了重负,但车上的重物也因此更多。假如是往山上推的话,比挑着还要命。西方早就有人在解决这类问题,先有阿基米德,后有牛顿。卡特,所以在一二百年前就把这问题解决了。而在我们中国,到现在也没解决。你或者会以为,西方文明有这么一点小长处,善于解决这种问题,但我以为这是不对的。主要的因素是感情问题。、西方人以为,人的主要情感源于自身,所以就重视解决肉体的痛苦。中国人以为,人的主要情感是亲亲敬长,就不重视这种问题。这两种想法哪种更对?当然是前者。现在还有人说,西方人纲常败坏,过着痛苦的生活–这种说法是昧良心的。西方生活我见过,东方的生活我也见过。西方人儿女可能会吸毒,婚姻可能会破裂,总不会早上吃两片白薯干,中午吃两片白薯干,晚上再吃两片白薯干,就去挑一天担子,推一天的重车!从孔孟到如今,中国的哲学家从来不挑担、不推车。所以他们的智慧从不考虑降低肉体的痛苦,专门营造站着说话不腰疼的理论。

在西方人看来,人所受的苦和累可以减少,这是一切的基础。假设某人做出一份牺牲,可以给自己或他人带来很多幸福,这就是崇高–洛克就是这么说的。孟子不是这么说,他的崇高另有根基,远不像洛克的理论那么能服人。据我所知,孟子远不是个笨蛋。除了良知良能,他还另有说法。他说反对他意见的人(杨朱、墨子)都是禽兽。由此得出了崇高的定义:有种东西,我们说它是崇高,是因为反对它的人都不崇高。这个定义一直沿用到了如今。细想起来,我觉得这是一种模糊不清的混蛋逻辑,还不如直说凡不同意我意见者都是王八蛋为好。总而言之,这种古怪的论证方式时常可以碰到。

在七十年代,发生了这样一回事:河里发大水,冲走了一根国家的电线杆。有位知青下水去追,电杆没捞上来,人也淹死了。这位知青受到表彰,成了革命烈士。这件事引起了一点小小的困惑:我们知青的一条命,到底抵不抵得上一根木头?结果是困惑的人惨遭批判,结论是:国家的一根稻草落下水也要去追。至于说知青的命比不上一根稻草,人家也没这么说。他们只说,算计自己的命值点什么,这种想法本身就不崇高。坦白地说,我就是困惑者之一。现在有种说法,以为民族的和传统的就是崇高的。我知道它的论据:因为反民族和反传统的人很不崇高。但这种论点吓不倒我。

过去欧洲有个小岛,岛上是苦役犯服刑之处。犯人每天的工作是从岛东面挑起满满的一挑水,走过崎岖的山道,到岛西面倒掉。这岛的东面是地中海,水从地中海里汲来。西面也是地中海,这担水还要倒回地中海去。既然都是地中海,所以是通着的。我想,倒在西面的水最终还要流回东面去。无价值的吃苦和无代价的牺牲大体就是这样的事。有人会说,这种劳动并非毫无意义,可以陶冶犯人的情操、提升犯人
的灵魂;而有些人会立刻表示赞成,这些人就是那些岛上的犯人–我听说这岛上的看守手里拿着鞭子,很会打人。根据我对人性的理解,就是离开了那座岛屿,也有人会保持这种观点。假如不是这样,劳动改造就没有收到效果。在这种情况下,人性就被逆转了。

从这个例子来看,要逆转人性,必须有两个因素:无价值的劳动和暴力的威胁,两个因素缺一不可。人性被逆转之后,他也就糊涂了。费这么大劲把人搞糊涂有什么好处,我就不知道,但想必是有的,否则不会有这么个岛。细想起来,我们民族的传统文化里就包含了这种东西。举个例子来说,朝廷的礼节。见皇上要三磕九叩、扬尘舞蹈,这套把戏耍起来很吃力,而且不会带来任何收益,显然是种无代价的劳动。但皇上可以廷杖臣子,不老实的马上拉下去打板子。有了这两个因素,这套把戏就可以耍下去,把封建士大夫的脑子搞得很糊涂。回想七十年代,当时学大寨和抓阶级斗争总是一块搞的,这样两个因素就凑齐了。我下乡时,和父老乡亲们在一起。我很爱他们,但也不能不说:他们早就被逆转了。我经历了这一切,脑子还是不糊涂,还知道一加一等于二,这只说明一件事:要逆转人性,还要有第三个因素,那就是人性的脆弱。

我认为七十年代是我们宝贵的精神财富,这个看法和一些同龄人是一样的。七十年代的青年和现在的青年很不一样,更热情、更单纯、更守纪律、对生活的要求更低,而且更加倒霉。成为这些人中的一员,是一种极难得的际遇,这些感受和别人是一样的。有些人认为这种经历是一种崇高的感受,我就断然反对,而且认为这种想法是病态的。让我们像奥威尔一样,想想什么是一加一等于二,七十年代对于大多数中国人来说,是个极痛苦的年代。很多年轻人做出了巨大的自我牺牲,而且这种牺牲毫无价值。想清楚了这些事,我们再来谈谈崇高的问题。就七十年代这个例子来说,我认为崇高有两种:一种是当时的崇高,领导上号召我们到农村去吃苦,说这是一种光荣。还有一种崇高是现在的崇高,忍受了这些痛苦、做出了自我牺牲之后,我们自己觉得这是崇高的。我觉得这后一种崇高比较容易讲清楚。弗洛伊德对受虐狂有如下的解释:假如人生活在一种无力改变的痛苦之中,就会转而爱上这种痛苦,把它视为一种快乐,以便使自己好过一些。对这个道理稍加推广,就会想到:人是一种会自己骗自己的动物。我们吃了很多无益的苦,虚掷了不少年华,所以有人就想说,这种经历是崇高的。这种想法可以使他自己好过一些,所以它有些好作用。很不幸的是它还有些坏作用:有些人就据此认为,人必须吃一些无益的苦、虚掷一些年华,用这种方法来达到崇高。这种想法不仅有害,而且是有病。

说到吃苦、牺牲,我认为它是负面的事件。吃苦必须有收益,牺牲必须有代价,这些都属一加一等于二的范畴。我个人认为,我在七十年代吃的苦、做出的牺牲是无价值的,所以这种经历谈不上崇高;这不是为了贬低自己,而是为了对现在和未来发生的事件有个清醒的评价。逻辑学家指出,从正确的前提能够推导出正确的结论,但从一个错误的前提就什么都能够推导出来。把无价值的牺牲看作崇高,也就是接受了一个错误的前提。此后你就会什么鬼话都能说出口来,什么不可信的事都肯信–这种状态正确的称呼叫做”糊涂”。人的本性是不喜欢犯错误的,所以想把他搞糊涂,就必须让他吃很多的苦–所以糊涂也很难得呀。因为人性不总是那么脆弱,所以糊涂才难得。经过了七十年代,有些人对人世间的把戏看得更清楚,他就是变得更聪明。有些人对人世间的把戏更看不懂了,他就是变得更糊涂。不管发生了哪种情况,七十年代都是我们的宝贵财富。

我要说出我的结论

中国人一直生活在一种有害哲学的影响之下,孔孟程朱编出了这套东西,完全是因为他们在社会的上层生活。假如从整个人类来考虑问题,早就会发现,趋利避害,直截了当地解决实际问题最重要–说实话,中国人在这方面已经很不像样了–这不是什么哲学的思辨,而是我的生活经验。我们的社会里,必须有改变物质生活的原动力,这样才能把未来的命脉握在自己的手里。


爷孙恋女主微凸小肚疑似怀孕,如何看待这场爷孙恋?

如果她涉世未深,则带她看尽世间繁华;若她心已沧桑,则带她去做旋转木马。如果他涉世未深,你就宽衣解带;如果他阅人无数,你就炉边灶台。

看了网上大多数的评论,几乎清一色的都是反对的声音。

我先给大家分析下这个案例,也许会带给你不一样的看法:

1.年龄差并不是关键

其实年龄相差41岁并不是关键,人家82岁杨振宁和28岁的翁虹还相差更多呢。以41岁的年龄差来说,一个81岁男人和40岁女人在一起,大家也不至于诟病的如此强烈。问题关键在于:女主20岁。她的年龄基数太小,所以会造成一种“老牛吃嫩草”的现象。而人们向来都有怜香惜玉的本性,看到小萝莉被“玷污”,于是纷纷爆炸。

2.看脸才是王道

从这个角度来说,李坤城真是欲哭无泪。嬉皮笑脸和大黄牙,加上台湾这个敏感地区和音乐人这个艺术性的职业,怎么看来都像一位为老不尊的浪子,也难怪被人灌上“猥琐”的标签。倘若爷爷换做吴秀波或者陈道明的长相,估计风头也会减弱不少。

3.爷爷能力尚未达到他的名气

一个好玩的现象,刘强东和奶茶妹妹在一起的时候,所有人都谩骂奶茶妹妹拜金虚荣,是她往上贴,很少有人骂刘强东;郭富城和方媛在一起的时候,所有人都指责方媛,很少有人骂郭富城。

老夫少妻的组合很常见,基本绝大多数都是指责女方。但是这次,爷爷李坤城却成了众矢之的,最多顺带指责下女方年纪小不懂事罢了。严格来说,作为一个大陆人,我并不太知道他有什么代表作,仅仅是从这次爷孙恋的舆论中了解(可能是我孤陋寡闻)。所以会给你造成一种,这就是个登徒浪子的感觉。

演艺圈这种情况非常普遍,长得漂亮的女明星很多。但是招骂的往往是没有演技只有美貌的花瓶,毕竟能力还是第一位的。

退一万步,王思聪玩弄众多网红女人,大家只会说一声有钱任性;如果是穷屌丝还玩弄女人感情,那真是千夫所指了。

我们先把偏见放到一边,抛开人设本身再认真看待这场爷孙恋。

爷孙恋合理吗?

在外国,老夫少妻早就习以为常,哪里都有牵着年轻女孩的手的老头子。可是中国的风俗不一样,更加偏向于传统。所以这种不为主流所认可的,自然饱受诟病。

说到底,这一场不大不小的纷争,其实就是中国传统和西方思维模式的一场碰撞。中西方的文化有着其截然不同的历史,所以一些行为上的差异我们也足够能够理解。

从目前中国的国情来说,爷孙恋还是一场禁忌,真爱也受到条条框框的制约。甭说是不是爷孙恋,就算是同性恋也没有彻底普及到让每个人都支持。这种尚未被大众认可的恋情,前进之路注定任重而道远。

虽然我不支持你的做法,但是我能够理解你们的真心。

化学亦人生

我们之所以常常怀念前任,只有两种原因,一个是时间不够久,一个是现任不够好。

01

没错,这是一个有点悲伤的爱情故事。故事的男主角叫盐酸,女主角叫氯化钠。是不是,你也觉得有点熟悉?嗯,就是你认识的那瓶盐酸以及那瓶氯化钠。

当然了,故事依然发生在实验室。

盐酸说,我注意她很久了。

隔着两个实验台,他眼神倒是蛮凌厉的。最初,他只是觉得她长得很白,他对长得白的女生毫无抵抗力,所以他的两个前女友,一个叫碳酸钙,一个叫氢氧化钠。关于前任的故事,我们稍后再讲。

但慢慢地,他发现了氯化钠更多的优点,比如用处很多,比如很受欢迎。她出现在很多个化学反应里,有时候也在处理实验样品的时候帮忙把有机相和水相分开。所以她每天忙碌又充实地生活着,频繁出现在实验员小张的手里。

甚至连人类的一日三餐也离不开她,这让盐酸对氯化钠的感觉从喜欢变成了仰慕。

他就这样每天隔着两张实验台的距离默默望着她,看着她幸福地忙碌,却从未有勇气上前打声招呼。他喜欢她,只是不再敢爱她。为什么呢?这就要提一提跟前任有关的故事了。

02

盐酸的第一任女朋友叫碳酸钙,脾气有点火爆,但其实是真心爱他。他们是彼此的初恋,却用一段不长不短的感情验证了人类的那句话:初恋根本不懂爱情。碳酸钙是典型的少女玻璃心性格,一言不合就要吵,吵完架来再和好。每一次争吵,碳酸钙都会先说一句“真是气死我了”,然后和盐酸之间不可避免地发生一场化学反应,以消耗彼此的质量而释放气体二氧化碳收场。

直到他们渐渐各自消瘦,也着实疲于开战,碳酸钙终于开口说,不然我们分手吧,这么耗下去对你我都是一种折磨。

他们最后一次坐在一起平静地聊天,细数过往,却发现曾经为之争吵的不过都是些鸡毛蒜皮的小事,比如盐酸的瓶盖没拧紧啦,比如他和她开捉迷藏的玩笑,拿硝酸兄弟当挡箭牌然后变成王水消失啦,再比如他和好兄弟浓硫酸聚在一起抽烟啦,哦,这算大事,使不得。

那些幼稚的琐碎的调皮捣蛋的曾经,不知为何在分手的一瞬间都骤然变成了一段段温暖的回忆,好多画面不得不就此停留在过去的那一帧,再无续集。

盐酸伤心了好一阵子。他常常想起碳酸钙,他知道尽管碳酸钙很任性,但更多的时候,其实是他忽略了她的感受。然而,生活终究无法倒退,在很多个有些落寞的夜晚,他感到唏嘘,然后也只能希望自己未来会变好一点,变成熟一点。

所以,后来他遇到了氢氧化钠,并再次印证了一句话:我们之所以常常怀念前任,只有两种原因,一个是时间不够久,一个是现任不够好。

盐酸以为,氢氧化钠就是那个将他从过去的遗憾里拯救出来的姑娘。她和碳酸钙性格迥异,她温婉内向,知名度高却并不因此傲娇跋扈,也从不吹毛求疵,美好得很安静。

但她会把很多话藏在心里,包括委屈和不满。那段时间,实验室接到一项检测重金属的项目,工作量突然增加。而在重金属的检测过程中,盐酸是必不可少的化学品之一,所以他不得不常常加班,也因此忽略了女友氢氧化钠。

日子就这样过了一段时间,忙碌中的盐酸再次忽略了,其实他和氢氧化钠之间好久都没联系过了。有一天,氢氧化钠平静地来到盐酸身边对他说,我们分手吧。盐酸吃惊地问她为什么,氢氧化钠却突然大哭起来。这时候盐酸发现,氢氧化钠流出的眼泪,就是和他发生化学反应后生成的水。而这样的化学反应,已经发生过很多次了,氢氧化钠只是选择自己默默流泪,却从未在他面前提起,以至于盐酸至此才意识到氢氧化钠每一次在背后隐忍的付出。

盐酸再一次觉得惭愧极了,如此安静美好的姑娘就这样为自己伤心了很多次,他却不得而知。他向氢氧化钠道歉,希望她能再给自己一次机会,但当他重新找到氢氧化钠的时候,她已经成了隔壁实验台上氯化钙的女朋友了。

这一次,盐酸心如死灰,他说自己不再相信爱情了,因为爱情似乎总是需要精心呵护,稍有疏忽就会在顷刻之间土崩瓦解,伤人伤己。

03

他发现还是一个人更加自由快活,只要自己开心就好,不需要为谁纠结和难过。直到他无意间第一次看到氯化钠,那种久违的心动再一次让他的视线停留在这位肤白貌美的姑娘身上,久久不愿离开。

但他却再也不敢表白了,他已经交过两个女朋友了,都是因为自己不够好才让对方离开,这一次换作他没安全感了,他害怕了。

巧的是,因为一次实验需要共同用到盐酸和氯化钠,实验员小张将他们拿到了同一张实验台上,那是他们距离最为接近的一次。

盐酸几次想要开口和氯化钠说话,想了又想,觉得还是算了。他在心里对自己说,就这样默默地喜欢着,何尝不是一种最好的选择呢,因为这不会意味着分手和离开。

如果读到这里,你都认为我一路瞎扯脑洞太大,那么我建议你继续读下去,因为,后面更扯。(迷之微笑)

好了,且让我把故事讲完。正因为那一次的偶遇,在实验接近尾声的时候,氯化钠突然转过头对盐酸说,很高兴认识你并和你共同完成一次实验,我是氯化钠,以后请多指教。

盐酸第一次害羞,或者说受宠若惊,因为女神竟然主动和他说话。他紧张地说着,不不不,你比我厉害啦,还是你多指教我。

氯化钠看着他憨憨的样子,也笑了。

接下来的日子里,大多数时候,他们依然相隔两张实验台的距离,但目光却总在不经意间交汇,然后不约而同地笑了。

盐酸隐隐地感觉到,氯化钠似乎也喜欢自己,但他不敢确定,他也没有勇气去问个究竟,过往的一切历历在目,让他一丝勇气也没有。

他依旧远远地看着她,在想她和自己的第二个女朋友都拥有共同的元素钠,那么她们的性格是否也会很相似呢?他自认为自己还没有变得更好,他怕再一次因为自己而让喜欢的人伤心,所以他不再敢开口。

时间嘀嗒嘀嗒地走着,直到他们认识很久,盐酸也没有任何一次提起过他内心真正的感受,这其中有爱慕,更有纠结。他天真地认为日子就会如现在这般美好地继续下去。

但是,他错了。或者说,他因为终于没能说出口的勇气而错失了最后一次机会。

春天里的一天,隔壁实验室的实验员找到小张,希望借一瓶氯化钠。小张走到两张实验台的后面,拿起了那瓶氯化钠。

小张不知道的是,就在两张实验台之外的距离,有一瓶盐酸,成了那个春天最孤独的一道风景。


你的关注和喜欢对我的梦想很重要,感谢支持❤

作品持续更新中,具体目录请见:昕璐妹作品小站

谢谢支持,么么哒~

所谓 || 婚恋观

恋爱和婚姻从来都是两个独立的个体,而不是必然存在的整体。适合谈恋爱的人未必适合结婚。同样的,适合结婚的人也不一定就适合谈恋爱。

随着新时代思想上的解放,我们对于婚姻也有了自己的要求,最近在网上看到一组对年轻一代的婚恋观调查结果显示,95后对于婚姻,他们认为比起金钱和长相,婚姻中看中的是双方是否三观一致。

说到三观一致,其实我认为真正能达到完全一致几乎不可能。所以我觉得所谓的三观一致,并不是要真正意义上的完全相同,而是彼此可以相互接纳不排斥对方观念,在不触碰对方底线的前提下而达成的一种共识。

恋爱容易结婚难,婚姻难就难在这并非两个人的结合,还有原生家庭和外在因素带来的影响,以及是否可以包容对方的缺点。

如果你是一个对生活质量有要求的人,就一定不要找一个每天只会较劲于超市里今天鲜肉打几折的人,他永远也体会不了为什么要花费那么多金钱在物质享受上面。假设你是一个对精神文化有要求的人,也千万不要找一个眼里只有游戏怎么样玩才能快速晋级的人,你会发现你和他讨论某本书里的经典桥段,某部电影里的艺术性表演有多少精彩绝伦,他永远也找不到认同感,只会觉得你在装文艺。

这些也许看似都是不起眼的小问题,但是最后都有可能成为你们婚姻里的导火线。因为对彼此思想行为的不认可,所以很容易因为一件小事就导致分道扬镳的结局。婚姻不等同于恋爱,恋爱里可能吵吵闹闹哄一哄便过去了。可是婚姻不一样,每一次吵架都可以延伸出一系列思想不和,观念冲突的情感矛盾。

我之前一个同事,恋爱3年,双方虽然偶尔有争执,但是每次都还是可以和好如初。可是当他们兴高采烈踏入婚姻时,才发现对彼此生活习惯都不适应。因为恋爱毕竟不是两个人真正生活在一起,距离产生美,同时也产生隔阂。行为习惯是最难改变的,那是日积月累形成的量变,所以恋爱中容易忽视的小细节,日后会发现却是大问题。

最后离婚的时候,女孩说过这样的一段话“我们谈恋爱只享受其中美好的过程,我们只看到了彼此的优点,却忽略了结婚也是要和彼此的缺点生活在一起的。我们没有真正考虑行为习惯,思想观念是否真的不冲突。我以前以为两个人生活在一起,只要有爱便够了,但是现在发现不是的,他的生活习惯,他的思维方式,以及他面对事物的处理能力都能影响到我们的感情”

谈恋爱的时候我们总是以后只要双方有爱情就够了,可是结过婚的人就会知道,并没有那么简单,所以才衍生出家家都有一本难念的经的婚姻佳句。之前一档节目中,女孩要求男友一年给自己过13个情人节,并且不能重样。当时看了第一眼除了觉得女孩公主病太严重,还有就是这个女孩太作。婚姻里偶尔作一下是怡情,但是太作迟早会让对方想放弃。谈恋爱或许还可以最大限度的去包容,去按着她所期待的样子去完成,但是结婚后如果还是这样的状态,再好品性的男人相信也会觉得疲惫。

我们总是把爱情想的太高尚,把婚姻看的太神圣。所以当我们身临其境去感受时会发现好像并非事事如我们所期待。

生活原本就是琐碎的当下凑成的每一天,这是不可回避的重要组成部分。很多人最终在婚姻里败下阵来的原因是因为根本就没有考虑过两个人真正生活在一起的样子。他们把爱情的期待从恋爱转移到婚姻里,可是追究两者是有区别的,人的精力都是有限的,婚姻中显然更多是实实在在的过日子。

谈恋爱我们可能更多的看到的是爱情中的感性面,但是婚姻却是现实中的理性面,好的婚姻会让彼此越来越好,坏的婚姻会让彼此越来越面目可憎。

再浪漫的爱情也会回归到生活的琐碎中,我们要庸俗的谈收入,聊家常理短,要考虑明天是吃什么,要考虑将来做什么。这些都是切实在我们的生活当中的每一天每一年必须要面对的现实。所以考虑好再去谈婚姻。不要盲目的以为婚姻里只有甜言蜜语,更多的还有家庭的责任,两个人的结合不是单方面的索取,更不是只一心想着他有没有为你制造更多浪漫,而是要齐心协力,让生活更加美好,让彼此更加优秀。

古观音禅寺

秦岭横亘八百里,育终南神秀;终南起止纷云,不明始终。但这无碍道观隐匿,不防禅院出没;更加山出佳木,一叶落而天下闻,趋之如骛,西沣路车首尾相继为一睹满地黄金叶者,古观音禅寺千年银杏也!

古观音禅寺,又名观音堂,家乡人简洁,两字命名曰:观堂。

左有律宗祖庭净业寺,右邻三论宗祖庭草堂寺。沣水出于东;高冠水没于西。

古观音禅寺有双绝:一曰神泉,二曰千年古银杏树。

区别游客是当地的还是外来的,有一种方法;对者银杏树狂拍而兴奋不己而去的,定是慕名而来;要在银杏树上拴红条子,再觅着喝一口甜水的,必是当地人。

当邻居家栽了十四年的银杏树的如金片一样的叶子载着秋风翻过院墙静卧在我的后院时,我想象得出,此刻这古观音禅寺的杏树下闪着光的万手机杂燥。

其实,这并不是这银杏的树下巅峰时刻。

这银杏树有多少神奇!

粗:七搂八匝半!

树龄:一千四百年!

树冠面积:三百二十平方!

树高:二十五米。

约莫三十八年前的初夏,一个传说自山上飘下来,且只在晚上耳传;白天无人谈论,人们只在田间低头干活,盼着天黑。

传说:银杏树哼哼;山下的民众心里明白,这是银杏树显灵了……

这是千年精灵有什么召示或开示吗!?不得而知,只见大人们拿着香火,黑地里不语组群而行,成群结队。村干部说,这是迷信!但怯于阻拦;人心慌慌。十岁上下的我,站在村口只看见人们出村;看不着人们回村!

因为我白天跑乏了,睡得早!

再后来,模糊的印象中,姑奶的村子过会,爷爷带我来过一次。

小表妹说,那一年南石舅家过十月会,我带着表弟表妹,一起手拉着手抱过这一银杏树。那天的情形是:银杏树上,许愿的红绫绸子枝枝桠桠满树,树下,昨夜的香火依稀拉着若有着无的烟,蜡烛的泪流了一树下。树有多处被火烧伤了。但依然有生命力的是新芽的枝条从树根柠着窜出地面,直而且泛年青的光,通身。

姨常讲她在庙中上课情形。加一句,四九年后,这古庙变成学校,僧人四散。

姨说,她们在庙里读书,去爱抬头看梁上;庙宽大又靠近山,凉爽至极。梁上常有蛇出没,或绕梁眠;人不招蛇,蛇不惹人。

想那蛇,早年间受佛经薰,而后又受文章陶,非精不成吧!她在否,可安康?!

这银杏千树不倒,其实可列精一类,要么入神一拔!

神不只这一尊,奇不只这一架!

树脚下有一眼泉,沽沽而流,旱不枯,涝不溢,千年一个节拍,一个歌声伴树而生,相倚相偎,可谓绝配!传说,喝她一口水者,明眸善睐;喝她两口水者,聪颖慧人;喝她三口水者,体健身强!

这一眼泉,让我好找!

因为修茸,她被藏在银杏树台的出口末端,被一木栅栏护着,一条链,一把铜锁!她的境遇不好,同情她。无良的商人借她的名开发了一款“神泉”桶装水,却把她用砖砌着,用链扛着,用锈锁禁着。神不受羁绊,泉自流不息。

禅院终要人打理,打理的僧人给这千年古寺的加项就是莲的满院开放。

这一次,我沉醉于禅院内的莲花了。

干净,开得层次错落,薄似纸,触之有亵玩之嫌;只好静静地观着,笑意在彼此的脸上。我细看这莲的底部,全是尺五的大缸镶入地下,于是水不失,莲有养。

禅院周遭尽可见莲,叶碧绿,花清心,蓬结实。

见莲而识佛心,见贤思齐可达!

莲遇佛而慧,佛坐莲乃通化。

禅意不以文示而用意会。

庙院不以佛重,不以建筑被人念,却因一棵树千年香火不灭,因一眼泉涓涓比肩大河者,方圆数百里,唯此一处。

出了寺院一直想他的名字很怪――古观音禅寺;古,是说给银杏的;观音,是说给佛的;禅,是说给宗旨的;寺,是说给僧人的。

银杏、佛、僧;精、神、人。

        2017初夏游古观音禅寺记。

快手健康食谱 | 用牛油果做“薯条”

每次馋薯条的时候,就会做烤箱版的“炸”薯条,把土豆切条,用盐、胡椒、大蒜粉等调料调味,再加一勺橄榄油,入烤箱180度烤15分钟(时间根据量的多少增减)。

除了番茄酱,配salsa或者guacamole也是极好的:

▲某天的早餐,被吐槽摆盘像一个趴着的人…..

不过,今天我写的,是个脑洞很大的做法,不用土豆,而是用牛油果,是的,牛油果!来做“薯条”。

这是我在看Lauren Toyota(安利过很多次的You tuber)视频的时候,看到她做了,就也尝试了下,结果……被惊艳了,好吃欸!赶紧写方子安利给大家。

牛油果“薯条”/Avocado French Fries

原料:

半个牛油果

面包糠

调味料(给面包屑调味)

植物奶(我用的腰果奶)

橄榄油

关于牛油果用量

一人份半个就够了,因为我还会吃一定量的坚果作为优质脂肪的来源,而且牛油果一次吃一个真的很腻额。

关于植物奶

其实用牛奶也可以,但植物奶会比较稠,更容易让面包糠均匀裹在牛油果上。

我现在用是so delicious的香草无糖腰果奶,单喝可能比较黑暗料理,但用来打smoothie一级棒,不光打出来浓稠,还有淡淡的香草味。

关于面包糠

购于麦德龙,大家在就近的超市购买即可。

关于调味料

面包糠买来一般是没有调味的,我用了墨西哥风味调味剂,里头有辣椒、大蒜、洋葱等等,只要放了它做什么都有墨西哥菜的感觉了….ORZ….

关于橄榄油

我用了喷雾装的橄榄油,可以把油均匀喷洒在面包糠上,进烤箱烤之后,面包糠就会非常酥脆了。不过我买的“菲丽柏瑞”这个牌子并不太好用,大家可以避开这个雷区。


制作过程

每次在微信、微博上po早餐图之后,就会有很多人问我:做做要多长时间,会不会来不及?上班会不会迟到?

我的答案永远是:来得及,只要时间分配合理。

在这个方子里,一进厨房,先预热烤箱—处理牛油果—牛油果“薯条”进烤箱—泡茶—热面包—做三明治的topping。

这样的分配可以保证每一步都有条不紊,如果你先是做三明治,然后急急忙忙处理完牛油果,却发现烤箱没预热,那是真的来不及了。

这个技能需要一定的时间,熟能生巧就能找到适合自己的方式啦。

▼烤箱180度预热,把牛油果切成条状,再剥皮:

▼把牛油果先放腰果奶浸一下,放面包糠里滚一下,再浸一下奶,再滚一下面包糠(滚一次的话会太薄):

▼把牛油果放烤盘上,喷上适量橄榄油,橄榄油可以让面包糠烤过后更酥脆,不过也可以不放油:

▼入烤箱180度烤10-15分钟,要注意观察,别烤焦了。我还做了一个开放型三明治:面包+hummus+红腰豆:

乾隆六下江南都做了什么事? 为什么有人拿他和隋炀帝下江南相比?

传闻乾隆下江南是为了寻找自己身世的真相,海宁陈家,隐藏惊天秘密……其实这些只是小说家言,本不足道。不过可以肯定的是,乾隆的母亲甄嬛确系汉人钱氏,后来改姓为钮钴禄氏,这在他爸爸雍正帝这个话痨的奏折中可以看出端倪。

其实,乾隆六次下江南真正的原因,结合他自己在《御制南巡记》中所说,大概是巡阅军队,视察水利,笼络人心,了解风俗,游览风景,顺便收藏江南美女这几个方面。另外还有一个重要原因,是向的爷爷康熙皇帝学习。乾隆一向自视甚高,处处都要和圣祖康熙对比,康熙曾六下江南,那么他也要下六次!康熙在位61年,那么他在位也要60年(少一年是给爷爷面子)!不知道这是一种什么心态?

那么乾隆六次下江南,到底干了些什么呢?看一下这张表,一目了然。

由上表可知,乾隆帝六次下江南做的事情主要有:

1. 视察河道。主要是黄河河道与江浙海岸工程,这是关系到国事民生的大计。

2. 阅兵。包括南京阅兵和杭州阅兵(水师),军队的重要性不许赘言。

3. 祭拜明太祖陵、孔庙、岳庙。这关系到王朝的正统性,承续前朝而不是鞑虏入侵。

4. 减免赋税。给予百姓一些恩惠。

5. 游览风光。西湖以及沿路景色。

综上来看,乾隆六次下江南,做的还是些正经事。从乾隆早年来看,他也把这几次南巡看得意义尤其重大,他曾在《御制南巡记》中这样说道:“予临御五十年,凡举二大事,一曰西师,二曰南巡。”在乾隆早期看来,南巡的意义和他向西北用兵是一样的,都是有利于王朝统续的大事。

然而,弊端也很快显露出来了,因为六次南巡,耗费实在太大了!据悉,乾隆每次南巡,随驾官兵一般都要到3000名左右,马匹约6000匹,船四五百只,役夫几千名,花费白银上百万两,真正是劳民伤财!

十几年后,乾隆对于南巡的态度也变得后悔不跌,他曾这样对一个军机章京(军机处拟写各种行政公文的人)吴熊光说:

“朕临御六十年,并无失德,惟六次南巡,劳民伤财,作无益,害有益,将来皇帝南巡,而汝不阻止,必无以对朕。”

可见乾隆六下江南的害处。事实上,这也是清朝由盛转衰的一个转折点,因为不但国库的钱被这个长命自负的“十全老人”花完了,而且民力也消耗了不少。

而之所以有人会拿乾隆帝下江南和隋炀帝下江南相比,大概也是因为这两次下江南的目的和结果都有可比之处。就目的来说,两次都有游山玩水的成分(也都有采集江南美女的传言)。就结果来说,两次下江南都耗费巨大,使得国力大损,而且特别扰民。

不过,乾隆因为有着之前康雍盛世的底子,而且懂得一些安抚手段,比如修黄河、减免赋税等,恩威并用,所以没有引起民变。而隋炀帝爆而无恩,急功冒进,下江南又进一步激起了民变,加速了隋帝国的崩塌。

不过,如果从更长远的时间维度来比,乾隆下江南恐怕还比不上隋炀帝。因为隋炀帝下江南伴随着开凿京杭大运河,千年以来,京杭大运河的作用已经不用多说,“弊在当代,功在千秋”八个字已经能概括隋炀帝开凿大运河的意义。而乾隆下江南留下了什么呢?一个耗空了的国家,却没有大运河这样的千秋功业。

早年一部电视剧《戏说乾隆》里,一个老奶奶在乾隆帝面前掰扯白话。她说:“康熙康熙,吃糠喝稀;乾隆乾隆,花钱花个大窟窿。”真相了,乾隆六下江南,确实花钱花了个大窟窿,让后来继任的皇帝们苦恼不已。

髻鬃花

文/胡婷婷

        故事要从十年前说起–

“撕拉”一声,窗帘掀开了,晨光迫不及待地爬到床沿,我睁开眼,看着一根火烧棍在灰尘里翻滚。奶奶坐在窗前梳头,折断了火烧棍,光束落在脸上,安分了很多。许是刺着眼了,奶奶站起来,拿着缺齿儿的梳子把头发赶到脑后,利落地转两圈,成了一个髻,再别上老式银钗,听她说,这叫髻鬃花。

奶奶梳好了头,坐下对着镜子照了照,火烧棍又出来作祟了。我忽然想起,昨天拿了她的破烂梳子给小灰狗梳毛哩!我沉到被窝里,害怕梳子上的狗毛掉到她的脸上。刚避开火烧棍,听到奶奶一声鬼叫–你这个发瘟的!还不起来喂鸡!

忙活了一阵,终于挨到吃早饭了,我端着饭碗蹲在道场上,小灰也蹲着,眼巴巴地望着我。大娘端着碗走过来,朝我的碗里望了望,“哎哟”一声:“你这吃的什么饭,大早上的就吃咸菜呀!我家桌子上有好几个菜,你去夹点。”“不了,奶奶腌的菜好吃。”“你奶奶呢?”“掏鸡屎哩!”“你这鬼东西!说话尽没好听的!”“您又要问我,我说了又不信,还以为我故意恶心您来着。”大娘懒得理会我,冲着后屋里大喊:“爱!我一会去地里,中午不回来了,鑫伢放你这,门口晒着棉花,个把钟头翻一下,日头下山跟玥伢收起来。”奶奶应了声,大娘啐了一口痰走了。我起身狠狠地瞪着她的背影,后悔刚才没说奶奶在屙屎哩!

我走进屋里抱怨:“大娘一年到头也没见送来一粒米一滴油,您倒好,天天替她忙活,这会子使唤起我来了,我欠她的不成!”“家里人叫你做点事有什么不应该的,你就像你娘,别人要不得一根针。”“像我妈有什么不好的,能吃苦能挣钱,还给您买金耳环,也不会使唤您干活!”“你娘好,你娘好,说几句就跟我杠上了。”“我妈不欺负人,更不欺负老人,大娘就是周扒皮,您闲着做什么不好要替她瞎操心。”“你是孩子,不懂。”奶奶说不过我的时候,都以这句话收尾,好像我分不清是非黑白。

午间,烈日烤着村子,初秋的阳光像发神经的阿婆,时而乖巧时而暴戾,前几日还穿着长袖衫,今儿热得卷裤脚了。我带着鑫伢去河对面的甜甜家玩,小峰看见也顺带一起去了。甜甜家大门锁着,我正准备离开,听到甜甜喊我:“玥伢,是你吧!我在家呢。”我折回去,趴在鸡门里朝里望:“你在家干嘛锁着门啊!”“我爸妈卖蜂蜜去了,奶奶又不带我,怕我玩水不安全哩。”“哦,我进不去怎么跟你玩呢?”“没事,这不有鸡门嘛!我在家翻了一瓶好吃的,像西瓜糖,分点给你,我只能给你们一人一粒,吃多了我妈会知道的。”我从鸡门里接过三粒“西瓜糖”,分给了鑫伢和小峰。甜甜家的门还锁着,玩不了躲猫和搭屋,吃完了糖,我带着他俩回去了。

今天的“西瓜糖”味道怪怪的,还有一点苦。

午后的阳光更加猖狂,热得要人命似的,知了吵得炸开了锅,连大椿树都捂住了耳朵。小峰回家时叫我晚上一起去甜甜家,我应了声,领着鑫伢回去睡午觉了。

日落时分,西晒照红了凉床,我半睡半醒地蠕动着。奶奶鬼叫到–睡得跟死人一样,还不起来帮忙收棉花!我挠醒了鑫伢,棉花是他奶奶家的,好歹也要出份力。知了的精力比我好太多,一觉醒来,它们还是没完没了地叫着,不仔细听还以为在报丧–“死了”–“死了”……

水泥地上的棉花像是从蒸笼里拿出来,晒得暖暖的,轻飘飘的。鑫伢滚到棉花中,画了个“大”字,我呵斥一声–快起来收棉花!

“这是要我的命啊!这哪辈子造的孽啊!我的儿啊,儿啊……”

河对岸飘过来撕心裂肺的哭声,声音大得震住了知了。闻声望去,像是甜甜家。我隐约觉得甜甜出事了,赶紧丢下棉花跑过去。

果不其然,甜甜躺在她妈妈的怀里,嘴角全是白沫,活像被毒死的鱼。后来十里八乡的人都知道–甜甜被“西瓜糖”毒死了。“西瓜糖”是她妈妈治脓疮的药。

我呆立在甜甜家的大门口,乡亲们闻讯赶来,有的抹泪,有的嘀咕着,奶奶也过来了,连声说着惋惜的话。我被人潮挤了出去,晃过神来又拼命挤了进去,我拉着奶奶的衣角告诉她–我和鑫伢还有小峰也吃了。大奶大叫一声–你这个不省心的!你要是出事了叫我怎么跟你娘交代啊!

我被奶奶拖回了家,小峰和他的奶奶也被叫回来了。两位奶奶兑了几大碗的盐水,硬逼着我们仨喝下去,想想不放心,又叫来了不远处的张兽医,兽医说我们吃得少,保证没事儿。这医术还真是了不得,能治阿猫阿狗,还能给人瞧病。奶奶信了,也就没给我们灌盐水。后来我们确实没事儿,只可惜甜甜没了。

村里规定小孩的丧事不能大办,过了几日,河边的田埂上冒出一个小土堆,奶奶说甜甜埋在那里,离家近,不冷清。西晒爬过来时,小土堆裹上了红色,像河里的红荷花。

秋分一过,天气凉了。太阳起得晚,奶奶拉开窗帘梳头也看不到火烧棍了。我问奶奶:“您头上的髻鬃花是爹爹送的吗?”奶奶拿着镜子照了照:“不是,我娘家陪嫁给的。娘家富裕,陪嫁带来很多银饰品,后年被鬼子收去了。就剩头上这么个破髻子。”“奶奶见过鬼子?”“那年代谁没见过,你大爹还参加了抗日。”“大爹好厉害!”我上学时,经常跟同学吹嘘–我大爹打过鬼子,是我们家的英雄!

园子里的南瓜熟了,奶奶叫我去找个大的送给甜奶奶。她说甜奶奶可怜,半瞎了还要自己糊口。我应了声,找了个通黄的提回家。南瓜煮饭特别好吃,秋后园子里没了蔬菜,奶奶为了省菜钱经常做南瓜饭,味道比咸菜好很多。我抱起南瓜,扶着奶奶去甜奶奶家。

甜奶奶单住在老房子里,屋内黑漆漆的,少得可怜的家什横七竖八地躺着。甜奶奶两手摸着墙壁,小心地挨到椅子上坐下,随后掏出一面脏兮兮的帕子擦拭眼水。

“难为你还来看我哟!自己养的儿子都不进这门那!”

“你过得可怜啊,我也是老人家,没啥给的,送个南瓜来做饭吃。眼睛可还看得见?”

“还能看到黑漆漆的影子,摸着做饭还行,放错调料也吃惯了,养些畜生做什么用,死在这里发臭都没人晓得哟!大儿子怪我不带孩子,甜甜死了要跟我拼命,现在也不送粮食,女儿可怜我,送点口粮过来还要被他骂,你说我一个瞎子怎么带孩子哟!”

甜甜奶奶哭得前俯后仰,奶奶也抹着泪。我看到甜奶奶头上的髻鬃花跟奶奶的一样。果然是同时代的人,说不定他们年轻的时候流行那个。只不过甜奶奶的髻别得没有奶奶的好,松垮垮地垂在后脑勺,晃一下就会掉下来。奶奶叫我去里屋拿梳子给甜奶奶梳头,我拿了来,梳子掉了一半的齿儿,脏兮兮的。奶奶费了好一会功夫才理顺了脏乱的白发,甜奶奶有点难为情地解释着:“眼瞎了,梳不好就不想梳了。”奶奶手儿巧,三两下拧成髻,再扣上髻鬃花。甜奶奶顿时显得精神多了。送罢南瓜,我和奶奶回家了,夕阳穿过树杈,射出一道道红,我想起了甜甜的小土堆,肯定又变成了红荷花。

奶奶说晚饭要
早点吃,省得开灯浪费电,晚上热些剩饭,太阳还没沉下西山,我就蹲在道场吃饭了。

“你家人好心肠,就我毒,不给老娘送米粮!你菩萨心肠也送些给我吃!自己家事不管好了还掺合别家的,你再献好心别怪我骂你家祖宗!害死我姑娘还有脸吃饭!”

甜甜妈对着我家大骂,我气得直起身子准备对骂过去,奶奶立马叫住了我:“任她骂去,别管。”“您给她老娘南瓜,她还要骂我家祖宗,为啥不骂她啊!”“你是小孩,不懂。”我气呼呼地进了家里,扒在大门的玻璃上瞪着甜甜妈。她骂累了,像瘸子一样一摇一摆地进屋里了。

太阳落下山头,甜甜的红荷花变回了小土堆。

日后,奶奶有个吃的喝的都往甜奶奶那里送,甜妈妈问候了我祖宗十八代,奶奶只是让我别搭理她。日子久了,我也习惯了,继续搀着奶奶去甜奶奶的黑屋里聊天。

仲秋的气候像失了水分的木柴,只欠一把火就能烧起来。

奶奶在家做锅贴粑,我隔一会就跑掉灶台边瞅着,恨不得趁她不注意先偷个来解解馋。

“爱!老姚家的老屋起火了,那老奶晕过去了!”大娘火急火燎地赶过来报信,那表情倒像是她老娘家起火了。

奶奶叫我守着火候,她过去看看。我应允了,心里竟莫名紧张起来,也没心思偷吃粑粑了。灶里的火熄了,奶奶还没有回来,我担心甜奶奶也会成为糊着白沫的死鱼,赶紧跑过去瞧瞧。

甜奶奶躺在外面的凉席上,干瘪的胸口一起一落,里屋的瓦楞上还冒着黑烟。奶奶说厨房起火了,乡亲们发现得早,好在有惊无险。

乡亲们把甜奶奶抬到床上,帮忙的,看热闹的也都散了。甜奶奶缓过神后,奶奶嘱咐几句也带着我回家了。路过老姚家,我仔细地瞅了瞅,也不知道他们家是没人还是死光了,老娘差点去了阎王那儿也不来关心一下。甜奶奶说他们是畜生,我看倒不如呢。

初冬的日子分外难熬,这时候倒怀念起了招人烦的知了。椿树的叶儿落得稀稀拉拉,奶奶大清早裹着袄子扫落叶,清理完了就坐在窗前梳头,三两下盘个髻,再别上髻鬃花,一切似乎没变,又好像哪里不同了。

起火之后,甜奶奶卧床不起,听说眼睛全瞎了,她的女儿三两天会过去看看,小儿子久居东北也回来住了段时间。奶奶时常弄些吃的送过去,但她不再让我跟着去,说女孩子见了不好。

过了些时日,听说甜奶奶得了重病,家里没人愿意付钱治疗,小儿子折回了东北,女儿也很少来了。老姚禁不住乡亲的风言风语,管起了甜奶奶的一日三餐。

冬天来得快,门前的树杈在寒风里左摇右摆,夜晚降了一场大雪,早晨推开窗子,雪亮的光线跟火烧棍一样刺眼。

甜奶奶自入冬以来死过很多次了,但最后又莫名活了过来。奶奶带着做好的锅贴粑,叫我抱着一床褥子,踏着白白的积雪前往甜奶奶家。

“银娇啊,我是要死啰,这日子过得想去死啊。”

“讲啥子晦气话,翻过年来天暖了会好的。”

“这辈子活着没意思,死了不用受苦啊。”

奶奶抹着泪,替甜奶奶加上褥子,唠了半晌后我搀着奶奶回家了。

回来的路上多了很多脚印,路也好走了些。我问奶奶:“甜奶奶的头发是谁剪掉的?”“我也不知道,可能是她女儿吧。”“哦,是吗?那髻鬃花去哪了?”奶奶没有回答。

远远望着甜甜的小土堆,它竟然变成了白荷花。

过几天就是春节,我爸妈也回来了,带了很多好吃的给奶奶,也给我买了新衣新鞋。奶奶过年住在我家,爸爸从楼上扛来火桶,买了上好的木炭,专门为奶奶取暖。奶奶喜欢坐在火桶里,缩着身子打瞌睡。

春节前一天,妈妈在厨房忙着炸萝卜园子,报信的乡亲来我家,说老姚娘死了。

终究没有挨到天回暖。

我扒在大门的玻璃上望着老姚家,听到男男女女的哭声,也不知道有没有流泪。

甜甜的土堆变成了枯黄色,跟落叶一样。

奶奶听到信儿,坐在火桶里,没有说话。

二月花娇,油菜花开得正好,老姚家养的蜜蜂莫名死光了,此后他也跟爸爸一样背井离乡,可惜没有吃饭的手艺。

十年前的故事说完了,我心里明白,髻鬃花的故事还没完。

【联合报】陈宛萱:热血路人还是正义魔人?——我们如何看待一个五岁女孩的裸体 (2175)

photo credit Ⓒ StockSnap

一个五岁女孩在台北大街上脱掉了衣服,会怎么样呢?这其实不是什么新鲜的故事,总是有一个行为不符合台湾社会期许的孩子,一个不肯教训孩子的家长,一群热血路人/正义魔人,还有几个未经同意拍摄的影片,未经同意地被散播到网路上公审,然后被媒体捡起猛力放送。

有的故事里,孩子不肯乖乖坐着,他们跑来跑去,爬上爬下,制造噪音,踢桌子踹椅子。有的故事里,他们穿的太少,在这个故事里,甚至不穿。家长说,小孩子就是这样,孩子有自己的想法。但旁人总是愤怒地大喊著,你要控制好你的孩子,你小孩怎么教的?小时候不教,以后要当流氓吗?不肯穿衣服,有多少变态在偷看啊(那你也不要偷拍还传上网了)?

小女孩就是要穿衣服

但在这个故事里,有几个重点跟其她的案例很不一样,其一是小孩的母亲并没有所谓的「放任」,她一直站在小孩的身边,也曾经要求女孩不要脱衣,她只是没有强迫女孩穿起衣服罢了。事发当下,她们是在车站附近等待孩子的父亲,要不是父亲找不到她们,多绕了点路,她们可能老早就进了车子,不会引起这么多注意。

另外一点是,女孩的妈妈立刻回应了路人的质疑,提供了解释,表明这是小女孩自己选择的,不是被迫的,因此路人不需担心小孩是因为受虐强迫脱衣。当然这不是她说了就算,路人关心是有道理的,但当路人说出「小女孩就是要穿衣服」这样的论调,明显地激怒了女孩的母亲,让她立刻摆出了防御的态度。而她的不悦也是有道理的,尤其是这话还是从女性同胞的口中说出,更是让人不满。如果说在公共场合裸露是不应该的,为什么要特别针对「小女孩」呢?

女生要保护好自己

身为一个女人,身为两个女孩的母亲,我非常能够体会这位母亲听到这句话的心情。一个在台湾出生长大的女人,不会不了解这句话里暗藏的意义:「女生要保护好自己」、「不懂得保护好自己要怪谁」、「妳深夜一个人回家/穿那么露/喝那么多,自己也有责任」。换句话说,就是我们都很熟悉的强暴文化——女生要把自己包裹起来,保护好自己,因为外面有很多不怀好心的(男)人。然后,它其实说的就是:女生是脆弱的、世界是很可怕的、妳不要天真的以为,妳跟男人一样,什么事都可以做,哪里都可以去。

在这样的恐吓里长大的我,时常都感到很害怕,那是一种藏在骨子里的害怕。这种恐惧会在妳迈出一步前就拉住妳,让妳像个在黑夜里哆嗦的孩子,让妳迟疑不前,不敢踏出熟悉的环境,因为世界对妳来说,是个随时有怪物会跑出来吞噬妳的可怕地方。我希望我的孩子可以不要有这种恐惧,我希望她们坚强、勇敢、自信,我希望她们喜爱自己的身体,为自己的身体感到骄傲,我希望她们乐于成为一个女人。我希望她们是自己的主人,而不是等待别人来保护她们,为了交换这种保护,用尽心思去取悦别人,成为男人眼中具有吸引力的、美丽的东西。

威胁与羞辱

一个希望教养出这般勇敢自信女孩的母亲,听到路人这种「小女孩就是要穿衣服(小男孩就不必吗?)」的论调,无疑会觉得很不舒服。更别提一个陌生人,突然跑过来跟我的孩子说话,用一些「大家都穿衣服、妳也要穿衣服」毫无说服力的说法,想要强迫一个自己不认识的孩子改变行为,甚至还拿出手机拍摄我没穿衣服的小孩,我想我也会发火,我也很难保持平静,我可能也会采取防御手段。因为我的本能必然是保护我的孩子,当陌生人一起公审她童真的无心行为(/错误),想让她觉得她应该为此感到羞愧时,我必然只好站在她那边,我绝对不可能跑去站在陌生人那边,一起羞辱她。

因为就像女孩爸爸说的,教育不是用要求的,它不能用威胁达成,它的目的绝对不是羞辱。用威胁与羞辱达成的教育,虽然效率很高,却会对一个孩子的发展造成永久的伤害。我想在台湾长大的每一个人,都有很多这种被威胁与羞辱的经验,「这次考试一定要考高分,要不然我就打死你」、「你这是什么成绩,要不要脸啊?你是白痴吗?」一个人恐怕不会因此就变得很会读书,但一定会觉得不会读书是一件很羞耻的事情。在一定程度上,「教育」的目的达成了,这羞耻感将永远地伴随着他,而有一天,因不小心失败而被羞辱的恐惧,也会如影随形。

photo credit Ⓒ StockSnap

要怎么教小孩?

如果我们想要教女孩在公共场合穿衣服是很重要的,我们要怎么做呢?首先我们要先想想,这是个五岁的女孩。很多当过父母的、刚当上父母的、有一个小孩但已经被你打怕了,或是没小孩但自以为很懂小孩的,其实都不记得、不知道、不了解,一个已经去野外玩了一整天的五岁小孩,在晚上六、七点的时候,基本是已经完全无可理喻的状态了。在一个孩子这么疲累的时候,讲什么理都是耳边风。在这样的时刻,只能尽快地将她带离现场,身体自主权与社会观感冲突之间的教育问题,可以等待其他更好的时刻慢慢解说。

最糟糕的,就是试图用羞辱和压迫的方式,来强迫她穿上衣服。当补习班的人跑出来说:「这样我们门面不好看」,当人们围住她们,未经许可地拍摄她们的影像,再再地传达出一个讯息,「裸体是羞耻的」、「女孩子不穿衣服是可耻的」,甚至会让她对自己的身体产生负面感受,而原本她是多么地自在自信呢!更别提对一个五岁女孩来说,被一群陌生人包围住指指点点,会是多么大的心理创伤经验。

裸体很可耻?

人们觉得可以这样义愤填膺,除了「保护小女孩不被变态偷窥」的想法之外,也深深地根植在我们对裸体的羞耻感里。梦中突然发现自己没穿裤子/衣服、深感羞愧的梦境,是很多人共同的经验,学者对人类为何把裸体当做羞耻没有定论,传统上认为裸体的性吸引力可能会动摇对稳定社会来说极为重要的固定伴侣关系(有固定伴侣关系才可以确定血统与继承)。但裸体是不是就会造成性吸引力?许多针对天体主义者的研究,已经证明了裸体跟性欲是没有绝对关连的。事实上,许多研究都发现,儿童接触到越多非性本质的裸体,不仅有更高的自我形象、身体自我接受与自我概念,对其日后的各方面的发展(较少滥用药物、较少得到性病、较少强暴甚至偷窃),都有正向的影响(Okami, Olmstead, Abramson & Pendleton, 1998; Story, M.D. 1979; Smith, D.C. & Sparks, W, 1986)。

没有人生来就对自己裸露的身体感到羞愧,这羞愧是后天养成的,也
可以后天去除。许多人原本生性保守的人,到了天体海滩后大解放,从此爱上裸体的自由自在,再也不觉得裸体是可耻的。这并不是说,每个人都应该裸露著身体上街;在公共场合的适当行为为何,的确是由社会集体决定。一个五岁女孩的裸体,在对身体态度较开放的北欧与荷兰,或许完全不会有问题,但在台湾这个阶段还无法接受,这也是可以理解的。但问题是,当我们面对一个五岁小女孩,我们要怎样把我们经由威胁、恐吓、羞辱学到的经验放到一旁,给她一个简单的理由:为什么一个人不能在大街上裸体?

怎么当个热血路人(而非正义魔人)?

虽然说我可以理解父母的立场,但我可以想像路人的震惊。如果这是个逼童当街脱衣羞辱的虐童案,没有这些热血路人,受虐的小女孩可能就得继续受苦了。的确,热血路人可以拯救一个危机边缘的孩子,但正义魔人却可以把一个用心培育孩子的家庭推入言论的地狱。我不想评论父母是否有更好的处理方式,毕竟当过父母的人都知道,有时候妳简直是超棒完美妈,有时候妳也会做出错误的决定,有时候妳自己也累得要死,实在没有办法好好思考。

有好几次,当我自己站在街上,看到我的小孩完全失去控制,而我自己到了尽头无法处理,我多么希望有什么天使会来帮帮我。比如说,热血的路人,他们会走过来,陪这个暴走的孩子说说话,他们不会急着指责,小朋友你这样很坏很不乖,你妈妈是怎么教的。他们会说,你还好吗?你这样会不会很冷啊,你的衣服不见了吗?你不喜欢穿衣服哦?但衣服可以保护我们的身体耶,穿裤子跌倒就不会那么痛了。

我希望他们明白,在他们不在场的好几千个日子里,我们并不是这个样子的;而现在的我们,需要一点协助,一点空间。但如果他们不先好好地聆听,如果他们急着要判我们刑责,如果他们只想拿起手机拍下我们的窘境,放到网路上让完全不认识我们的人评论我们,那善意就浪费成了恶果,他们也就从热血路人,变身成真正造成伤害的正义魔人了。

photo credit Ⓒ StockSnap