diff -r 69095778cbfd pypy/module/micronumpy/__init__.py
--- a/pypy/module/micronumpy/__init__.py	Wed Dec 28 21:28:47 2011 +0100
+++ b/pypy/module/micronumpy/__init__.py	Sat Dec 31 19:17:59 2011 +1000
@@ -90,6 +90,8 @@
     appleveldefs = {
         'average': 'app_numpy.average',
         'mean': 'app_numpy.mean',
+        'var': 'app_numpy.var',
+        'std': 'app_numpy.std',
         'sum': 'app_numpy.sum',
         'min': 'app_numpy.min',
         'identity': 'app_numpy.identity',
diff -r 69095778cbfd pypy/module/micronumpy/app_numpy.py
--- a/pypy/module/micronumpy/app_numpy.py	Wed Dec 28 21:28:47 2011 +0100
+++ b/pypy/module/micronumpy/app_numpy.py	Sat Dec 31 19:17:59 2011 +1000
@@ -29,6 +29,16 @@
         a = numpypy.array(a)
     return a.sum()
 
+def var(a):
+    if not hasattr(a, 'var'):
+        a = numpypy.array(a)
+    return a.var()
+
+def std(a):
+    if not hasattr(a, 'std'):
+        a = numpypy.array(a)
+    return a.std()
+
 def min(a):
     if not hasattr(a, "min"):
         a = numpypy.array(a)
diff -r 69095778cbfd pypy/module/micronumpy/interp_numarray.py
--- a/pypy/module/micronumpy/interp_numarray.py	Wed Dec 28 21:28:47 2011 +0100
+++ b/pypy/module/micronumpy/interp_numarray.py	Sat Dec 31 19:17:59 2011 +1000
@@ -559,6 +559,20 @@
     def descr_mean(self, space):
         return space.div(self.descr_sum(space), space.wrap(self.size))
 
+    def descr_var(self, space):
+        ''' var = mean( (values - mean(values))**2 ) '''
+        w_res = self.descr_sub(space, self.descr_mean(space))
+        # Have to assert that this result is a BaseArray or else 
+        # descr_pow() fails with an exception related to "demoting method"
+        assert isinstance(w_res, BaseArray) 
+        w_res = w_res.descr_pow(space, space.wrap(2))
+        assert isinstance(w_res, BaseArray)
+        return w_res.descr_mean(space)
+
+    def descr_std(self, space):
+        ''' std(v) = sqrt(var(v)) '''
+        return interp_ufuncs.get(space).sqrt.call(space, [self.descr_var(space)] )
+
     def descr_nonzero(self, space):
         if self.size > 1:
             raise OperationError(space.w_ValueError, space.wrap(
@@ -1199,6 +1213,8 @@
     all = interp2app(BaseArray.descr_all),
     any = interp2app(BaseArray.descr_any),
     dot = interp2app(BaseArray.descr_dot),
+    var = interp2app(BaseArray.descr_var),
+    std = interp2app(BaseArray.descr_std),
 
     copy = interp2app(BaseArray.descr_copy),
     reshape = interp2app(BaseArray.descr_reshape),
diff -r 69095778cbfd pypy/module/micronumpy/test/test_module.py
--- a/pypy/module/micronumpy/test/test_module.py	Wed Dec 28 21:28:47 2011 +0100
+++ b/pypy/module/micronumpy/test/test_module.py	Sat Dec 31 19:17:59 2011 +1000
@@ -27,6 +27,16 @@
         assert max(range(10)) == 9
         assert max(array(range(10))) == 9
 
+    def test_var(self):
+        from numpypy import array, var
+        assert var(range(10)) == 8.25
+        assert var([5.0])     == 0.0
+
+    def test_std(self):
+        from numpypy import array, std
+        assert std(range(10)) == 2.8722813232690143
+        assert std([5.0])     == 0.0
+
     def test_constants(self):
         import math
         from numpypy import inf, e, pi
