6. Pythonは禅
The Zen of Python, by Tim Peters
Beautiful is better than ugly.
醜いより美しいほうがいい。
Explicit is better than implicit.
暗示するより明示するほうがいい。
Simple is better than complex.
難解であるよりは平易であるほうがいい。
Complex is better than complicated.
複雑であるよりは難解であるほうがいい。
Flat is better than nested.
ネストは浅いほうがいい。
Sparse is better than dense.
密集しているよりは 間があるほうがいい。
Readability counts.
読みやすいことは善である。
6
7. Special cases aren't special enough to break the rules.
特殊であることはルールを破る理由にならない。
Although practicality beats purity.
しかし、実用性を求めると自然さが失われることがある。
Errors should never pass silently.
エラーは隠すな、無視するな。
Unless explicitly silenced.
ただし、わざと隠されているのなら見逃せ。
In the face of ambiguity, refuse the temptation to guess.
曖昧なものに出 ったら、その意味を適当に推測してはいけない。
There should be one-- and preferably only one --obvious way to do it.
たったひとつの冴えたやりかたがあるはずだ。
Although that way may not be obvious at ?rst unless you're Dutch.
そのやり方は一目見ただけではわかりにくいかもしれない。オランダ人にだ
けわかりやすいなんてこともあるかもしれない。
Now is better than never.
ずっとやらないでいるよりは、今やれ。
7
8. Although never is often better than right now.
でも、今"すぐ"にやるよりはやらないほうがマシなことが多い。
If the implementation is hard to explain, it's a bad idea.
コードの内容を説明するのが難しいのなら、それは悪い実装で
ある。
If the implementation is easy to explain, it may be a good idea.
コードの内容を容易に説明できるのなら、おそらくそれはよい
実装である。
Namespaces are one honking great idea -- let's do more of
those!
名前空間は優れたアイデアであるため、積極的に利用すべきで
ある。
http://qiita.com/IshitaTakeshi/items/e4145921c8dbf7ba57ef
8
19. 例 - ランク2とランク3
#b.shape[-a.ndim:] == a.shape の時は
a = arange(12).reshape((3,4))
b = ones((2,3,4))
# 全て計算可能
print "a + b = "
print a + b
print "a - b = "
print a - b
print "a * b = "
print a * b
print "a / b = "
print a / b
print "a ** b = "
print a ** b
19
22. # b.shape[-a.ndim:] != a.shape の時は、
a = arange(12).reshape((3,4))
b = ones((2,3,6))
#全て計算不可能
a + b; a - b; a * b; a / b; a ** b
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-15-852b2a6c2213> in <module>()
20 b = ones((2,3,6))
21 #全て計算不可能
---> 22 a + b; a - b; a * b; a / b;a ** b
23
24
ValueError: operands could not be broadcast together with shapes (3,4) (2,3,6)
22
37. For example, input the number from 0 to
{array size -1}.
a.range();
b.range();
c.range();
d.range();
e.range();
f.range();
g.range();
37
38. 1. array is able to be viewed
with following format
a =
[0.00e+00 1.00e+00 ]
b =
[[0.00e+00 1.00e+00 ]
[2.00e+00 3.00e+00 ]
[4.00e+00 5.00e+00 ]]
38
39. 2. Binary operation is supported.
a + 2 - a * a / 4 =
[2.00e+00 2.75e+00 ]
39
40. 3. So-called 'broadcast' tecnhnic
is supported.
a + b = [0 1] + [[0 1], [2 3], [4 5]] =
[[0.00e+00 2.00e+00 ]
[2.00e+00 4.00e+00 ]
[4.00e+00 6.00e+00 ]]
a + b + c + d + e + f + g
= {is also able to be calculeted but too big to output.}
40
41. 4. Product of dot, cross and dyad
is suported.
The dot product of a and b is
[[1.00e+00 3.00e+00 5.00e+00 ]
[1.00e+00 3.00e+00 5.00e+00 ]
[1.00e+00 3.00e+00 5.00e+00 ]]
The cross product of a and b is
[[0.00e+00 -2.00e+00 -4.00e+00 ]
[0.00e+00 -2.00e+00 -4.00e+00 ]
[0.00e+00 -2.00e+00 -4.00e+00 ]]
The dyadic product of a and b is
[[[[0.00e+00 0.00e+00 ]
[0.00e+00 0.00e+00 ]
[0.00e+00 0.00e+00 ]]
[[0.00e+00 1.00e+00 ]
[0.00e+00 1.00e+00 ]
[0.00e+00 1.00e+00 ]]]
[[[0.00e+00 2.00e+00 ]
[0.00e+00 2.00e+00 ]
[0.00e+00 2.00e+00 ]]
[[0.00e+00 3.00e+00 ]
[0.00e+00 3.00e+00 ]
[0.00e+00 3.00e+00 ]]]
[[[0.00e+00 4.00e+00 ]
[0.00e+00 4.00e+00 ]
[0.00e+00 4.00e+00 ]]
[[0.00e+00 5.00e+00 ]
[0.00e+00 5.00e+00 ]
[0.00e+00 5.00e+00 ]]]]
41