正規表現

# -*- coding: utf-8 -*-

import re

text = "[width=30, height=45] [width=40, height=20]"
pattern = re.compile(r'\[width=(.*?), height=(.*?)\]')
iterator = pattern.finditer(text)
for match in iterator:
    print match.group(0)  # 1回目: [width=30, height=45]   2回目: [width=30, height=45]  
    print match.group(1)  # 1回目: 30                      2回目: 40           
    print match.group(2)  # 1回目: 45                      2回目: 20           
    print match.groups()  # 1回目: ('30', '45')            2回目: ('40', '20')
# -*- coding: utf-8 -*-

import re

text = "[width=30, height=45] [width=40, height=20]"
pattern = re.compile(r'\[width=(.*?), height=(.*?)\]')
print pattern.findall(text)[0]     # ('30', '45')
print pattern.findall(text)[0][0]  # 30
print pattern.findall(text)[0][1]  # 45
print pattern.findall(text)[1]     # ('40', '20')
print pattern.findall(text)[1][0]  # 40
print pattern.findall(text)[1][1]  # 20

http://minus9d.hatenablog.com/entry/20120713/1342188160

>>> r = re.compile("([a-z]+)=([0-9])"
>>> m = r.search("abc=123&def=456")
>>> m.group(0)    # マッチした部分全て
'abc=1'
>>> m.group(1)    # 1番目のグループ
'abc'
>>> m.group(2)    # 2番目のグループ
'1'

http://d.hatena.ne.jp/yumimue/20071220/1198141598

import re
if re.search(r'(cat|dog)', 'ant,dog,fish'):
    print('match!')
import re
if re.compile("福岡|神奈川|東京|千葉").search("東京都目黒区"):
    print("Match!")

http://qiita.com/zaoriku0/items/96790317ede5b0c8308d

置換

src = 'I like orange.'
dst = src.replace('orange', 'apple') # 'I like apple.'

正規表現による置換

import re
src = 'I like orange.'
dst = re.sub(r'[a-z]+', 'xxx', src) # 'I xxx xxx.'

http://orangain.hatenablog.com/entry/20100503/1272900555

re.sub(r'(\d)(\d+)', r'abc\1-\2', 'A123B')  # 'Aabc1-23B'
def func(m):
    n=int(m.group())
    return str(n*2)
 
re.sub(r'(\d+)', func, "A128B")  # 'A256B'
re.sub(r'(\d+)', lambda m:str(int(m.group())*3), "A123B")  # 'A369B'

http://python.civic-apps.com/string-replace/

マッチした文字列を取得する

m = re.search(r"([a-z]+)\s*=\s*([0-9]+)", "index = 123")

if m:
   print(m.group(0))                # ->  "index = 123"
   print(m.group(1))                # ->  "index"
   print(m.group(2))                # ->  "123"

参考)http://qiita.com/kaeruair/items/747518c116c85a88ee21

ひらがなの抽出

import re

src = u'ひらがなカタカナ漢字'
ans = ''
for ch in src.decode('utf-8'):
    if re.search(r'(?:\xE3\x81[\x81-\xBF]|\xE3\x82[\x80-\x93])', ch.encode('utf-8')):
        ans += ch
print(ans) # 'ひらがな'

参考)ひらがな以外の正規表現もある

http://winter-tail.sakura.ne.jp/pukiwiki/index.php?Python%A4%A2%A4%EC%A4%B3%A4%EC%2F%C0%B5%B5%AC%C9%BD%B8%BD%A5%D1%A5%BF%A1%BC%A5%F3

乱数列の生成

import random

random.sample(xrange(10), 3)
# [2, 0, 6]
random.sample(xrange(10), 10)
# [3, 2, 0, 6, 8, 4, 7, 9, 5, 1]
random.sample((1,1,2,3,5,8,13), 3)
# [8, 5, 3]
random.sample((1,1,2,3,5,8,13), 7)
# [2, 13, 1, 1, 5, 3, 8]

バイナリ文字列

string = b'\x616263'
# 'abc'

sort

sortedを使う

>>> student_tuples = [
    ('john', 'A', 15),
    ('jane', 'B', 12),
    ('dave', 'B', 10),
]
>>> sorted(student_tuples, key=lambda student: student[2])   # sort by age
[('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]

参考)http://docs.python.jp/2/howto/sorting.html

配列からの要素の条件抽出

array = [1,2,3,4,5]
even = [x for x in array if x % 2 == 0]  ## [2,4]

for文に対応するelse文

for文がbreakされずに正しく終了したときに実行される

def find(seq, target):
    for i, value in enumerate(seq):
        if value == tgt:
            break
    else:
        return -1
    return i

参考)http://kesin.hatenablog.com/entry/2013/05/12/004541

for + zip

>>> list1 = [1, 2, 3]
>>> list2 = [4, 5, 6]
>>> for (a, b) in zip(list1, list2):   #list1,list2を同時にループ
...   print a,b
... 
1 4
2 5
3 6
>>> list1 = [1, 2, 3]
>>> list2 = [4, 5, 6]
>>> [x*y for (x,y) in zip(list1, list2)]
# [4, 10, 18]

zip

>>> list1 = [1, 2, 3]
>>> list2 = [4, 5, 6, 7]
>>> [x*y for (x,y) in zip(list1, list2)]
# [4, 10, 18]

izip_longest

>>> from itertools import izip_longest
>>> list1 = [1, 2, 3]
>>> list2 = [4, 5, 6, 7]
>>> [x*y for (x,y) in izip_longest(list1, list2, fillvalue=0)]
# [4, 10, 18, 0]
>>> from itertools import izip_longest
>>> list1 = [1, 2, 3]
>>> list2 = [4, 5, 6, 7]
>>> [x+y for (x,y) in izip_longest(list1, list2, fillvalue=0)]
# [5, 7, 9, 7]

参考)http://lightson.dip.jp/zope/ZWiki/087_e8_a4_87_e6_95_b0_e3_81_ae_e9_85_8d_e5_88_97_e3_82_92_e4_b8_a6_e8_a1_8c_e5_87_a6_e7_90_86_e3_81_99_e3_82_8b

参考)http://python.civic-apps.com/zip-enumerate/

辞書(perlのハッシュor連想配列に相当)

d = {'matthew': 'blue', 'rachel': 'green', 'raymond': 'red'}
for k in d:
    print k

for k in d:
    print k, '-->', d[k]
for k, v in d.items():
    print k, '-->', v
for k, v in d.iteritems():
    print k, '-->', v

でメモリ節約

valueの方でソートするには

for key, value in sorted(d.items(), key=lambda x:x[1])
    print('{} {}'.format(key, value))

逆順にするには

for key, value in sorted(d.items(), key=lambda x:x[1], reverse=True)
    print('{} {}'.format(key, value))

登録は

d['john'] = 'yellow'

numpy.cumsum

>>> a = np.array([[1,2,3],[4,5,6]])
>>> np.cumsum(a)
array([ 1,  3,  6, 10, 15, 21])

cf) https://openbook4.me/projects/155/sections/945

numpy.where

>>> a = np.arange(15).reshape((3,5))
>>> a
array([[ 0,  1,  2,  3,  4],
       [ 5,  6,  7,  8,  9],
       [10, 11, 12, 13, 14]])
>>> np.where(a%2==0)
(array([0, 0, 0, 1, 1, 2, 2, 2]), array([0, 2, 4, 1, 3, 0, 2, 4]))

map機能

関数を別途定義

items = [1, 2, 3]
def plus(n):
    return n+20
map(plus, items)
結果: [21, 22, 23]

lambda関数を使用

items = [1, 2, 3]
map(lambda n:n+20, items)
結果:[21, 22, 23]

リスト内包表記(これが最適らしい)

items = [1, 2, 3]
[x+20 for x in items]
結果:[21, 22, 23]

参考)http://python.civic-apps.com/map-reduce-filter/

str = '12,34,56'
a, b, c = map(int, str.split(','))
# a = 12
# b = 34
# c = 56

サブプロセスの処理

import subprocess
cmd = "sleep 30"
proc = subprocess.call( cmd , shell=True)

shell=True は shellを経由するかどうか

stdout_data, stderr_data = proc.communicate()

で結果を得る

proc.wait()

proc.terminate()

で合流

だが子プロセスが残りやすいので、確認の上場合によっては別途 os.system('kill -9 ...') か

http://takuya-1st.hatenablog.jp/entry/2016/04/11/044313

import subprocess

command = "ls -la | sort -r"                  #!ここに実行したいコマンドを書く!
proc = subprocess.Popen(
    command,
    shell  = True,                            #シェル経由($ sh -c "command")で実行。
    stdin  = subprocess.PIPE,                 #1
    stdout = subprocess.PIPE,                 #2
    stderr = subprocess.PIPE)                 #3

stdout_data, stderr_data = proc.communicate() #処理実行を待つ(†1)
print stdout_data  #標準出力の確認
print stderr_data  #標準エラーの確認

参考)http://ni66ling.hatenadiary.jp/entry/20150110

file

with open('data.txt') as f:
    data_array = [x.strip() for x in f.readlines()]

strip()は改行の除去に使用

import glob

files = glob.glob('*.txt')

for file in files:
    print file

pythonでUTF8のテキスト処理

shellの呼び出し

import commands

result = commands.getoutput("ls -la")
os.system('ls -la')

画像を扱うとき

cv2

import cv2

im = cv2.imread('image.jpg')
im.shape ←解像度、チャンネル数が分かる

PIL

from PIL import Image

im = Image.open('image.jpg')
im.size ←解像度が分かる
im.mode ←チャンネル数が分かる

numpy と PIL 相互に変換可能

pythonらしい書き方 (where)

image = cv2.imread('image.png')    
height, width, depth = image.shape

image = image.astype('float')
B, G, R = image[:, :, 0], image[:, :, 1], image[:, :, 2]
num = R - B
den = R + B
image = np.where(den == 0, 1, (num/den)*255.0).clip(0.0, 255.0)

cv2.imwrite('newImage.png',image)

参考)http://stackoverflow.com/questions/27929780/how-to-increase-pixel-math-speed-using-numpy

画素値に上限を設ける

上限50、それを越える値を取らないようにする

img = np.minimum(img, 50)

表示に際には、255が最大などと教えてあげる必要があるかも

plt.imshow( img, vmin=0, vmax=255 )

参考)http://www.mwsoft.jp/programming/computer_vision_with_python/1_3_numpy.html

使えそうなフィルタ

Morphological Transformations

二値化

http://docs.opencv.org/trunk/d7/d4d/tutorial_py_thresholding.html ←Adaptive Gaussian Thresholding が要注目

アフィン変換

原点中心の回転と平行移動

回転中心を指定←ただし、centerの座標が逆。正しくは(y,x)の座標で与える

OpenCVの例とscipyの例

 cv2.getRotationMatrix2D(center, angle, scale)

 cv2.warpAffine(src, M, dsize, dst, flags, borderMode, borderValue)←このマニュアルの行列をスケールに関して一般化すれば、一般のアフィン変換を作れる

 scipy.ndimage.interpolation.rotate(input, angle, axes=(1, 0), reshape=True, output=None, order=3, mode='constant', cval=0.0, prefilter=True)

OpenCVで画像上に別の画像を描画する

膨張・収縮処理

Python OpenCV3で画素の膨張処理(dilation)と収縮処理(erosion)

エッジ保持平滑化フィルタ

OpenCVのエッジ保持平滑化フィルタ

画像に日本語文字列を書き込む

要は、PILなら日本語文字列を扱いやすいので、 PILで日本語を含む画像を作成し、それをnumpyの画像データに上書きするサンプル

def drawText(img, text, locX, locY, fontsize=20):
    # フォントの指定。引数は順に「フォントのパス」「フォントのサイズ」「エンコード」
    # メソッド名からも分かるようにTure Typeのフォントを指定する
    #fontname = '/usr/share/fonts/truetype/kochi/kochi-gothic.ttf'
    fontname = '/usr/share/fonts/truetype/takao-gothic/TakaoGothic.ttf'
    #fontsize = 20
    windowX = fontsize * 1
    windowY = fontsize

    font = ImageFont.truetype(fontname, fontsize, encoding='unic')
    
    image = Image.new('RGB', (windowX, windowY), (0,0,0))
    draw = ImageDraw.Draw(image)
    
    # 日本語の文字を入れてみる
    # 引数は順に「(文字列の左上のx座標, 文字列の左上のy座標)」「フォントの指定」「文字色」
    draw.text((0, 0), text, font = font, fill='#ffff00')
    #image.save('hello.png', 'PNG')

    text_img = np.asarray(image)
    img[locY:locY+windowY, locX:locX+windowX, :] = text_img
    return img

img = cv2.imread(file)
drawText(img, u'あ', 10, 20, fontsize=20)

参考1)PILで日本語を使ってみた

参考2)PIL.Imageの使い方のページ

参考3)Pillow(PIL)で文字列を画像として保存(位置・サイズ自動調整)

Matplotlib

Matplotlibで画像の表示

あ <=> e38182 のようにUTF-8文字コード変換

# -*- coding: utf-8 -*-

def get_code(ch):
    s = ""
    for c in ch:
        s += "%x" % ord(c)
    return s

def get_jp(str):
   s = ""
   for i in xrange(0, len(str), 2):
       s += chr(int(str[i:i+2], 16))
   return s

for kanji in ("あ", "見"):
    code = get_code(kanji)
    print('{} => {}'.format(kanji, code))
    kanji2 = get_jp(code)
    print('{} => {}'.format(code, kanji2))

実行結果は

あ => e38182
e38182 => あ
見 => e8a68b
e8a68b => 見

参考)http://yoshi-python.blogspot.jp/2009/09/blog-post_8779.html

あ <=> 3042 のようにUnicode文字コード変換

for kanji in ("あ", "見"):
    code = get_code(kanji.decode('utf-8'))
    print('{} => {}'.format(kanji, code))

リストとタプルの相互変換

タプル⇒リスト

tuple_value = (1,2,3,4,5)
list(tuple_value)
   [1, 2, 3, 4, 5]

リストか⇒タプル

list_value = [1,2,3,4,5]
tuple(list_value)
   (1, 2, 3, 4, 5)

参考)Pythonでリストとタプルの相互変換

webページのダウンロード

from urllib2 import urlopen, URLError

try:
    response = urlopen(url)
except URLError as e:
    if hasattr(e, 'reason'):
        print('We failed to reach a server.')
        print('Reason: ', e.reason)
    elif hasattr(e, 'code'):
        print('The server couldn\'t fulfill the request.')
        print('Error code: ', e.code)
else:
    # OK

参考)https://docs.python.jp/3/howto/urllib2.html

BeautifulSoup

$ sudo pip install beautifulsoup4
from urllib2 import urlopen
from bs4 import BeautifulSoup

html = urlopen(url)
soup = BeautifulSoup(html, 'html.parser')

参考)http://qiita.com/itkr/items/513318a9b5b92bd56185

zip ファイルのダウンロード

import requests

def download_file(zipUrl):
    filename = zipUrl.split('/')[-1]
    r = requests.get(zipUrl, stream=True)
    with open(filename, 'wb') as f:
        for chunk in r.iter_content(chunk_size=1024):
            if chunk:
                f.write(chunk)
                f.flush()
        return filename
    
    return False
zipUrl = 'http://somewhere/on/web.zip'
filename = download_file(zipUrl)
if filename:
    print('{} is downloaded'.format(filename))

参考)http://www.lifewithpython.com/2015/10/python-how-to-download-extact-zip-file.html

zip ファイルの unzip

import zipfile

def zip_extract(filename):
    target_directory = '.'
    zfile = zipfile.ZipFile(filename)
    zfile.extractall(target_directory)

zipFile = 'archive.zip'
zip_extract(zipFile)

参考)http://www.lifewithpython.com/2015/10/python-how-to-download-extact-zip-file.html

import zipfile
import os

zf = zipfile.ZipFile('test.zip', 'r')
print zf.namelist()  # ['test/', 'test/test1.txt', 'test/test.txt', 'test/test1/', 'test/test1/test1.txt']
for f in zf.namelist():
    if not os.path.basename(f):
        os.mkdir(f)
    else:
        with file(f, 'wb') as uzf:
            uzf.write(zf.read(f))
zf.close()

参考)http://d.hatena.ne.jp/s-n-k/20080508/1210266149

python から C/C++ のコードを呼ぶ

c/c++ wrapper for python

要は shared object を作って python から呼ぶ

↑Boost.Python

↓pybind11 という選択肢もある

pybind11でC++の関数をpythonから使う

↓Boost.Python

boost::python(6) pyublasを利用したnumpy.arrayとの連携方法

C++でPythonを拡張するためのBoost.NumPyチュートリアル(実践編)

Boost::python(3) pythonの辞書型(dict)、listで返す方法

boost::python(1) classと関数の使用方法(PythonからC++の呼び出し)

boost::python(2) STLの活用 vectorとmap(Suiteも活用)

Boost::python(4) クラスの継承と多重継承

Boost::python(5) pyublasのインストール

Boost.Python の機能をざっと紹介してみる

コンストラクタのオーバーロード⇒init<>()を2つ書く ← http://alpha.osdn.jp/devel/boost.python_ja.pdf

scikit-learn

アルゴリズム雑記 Scikit-learnで機械学習入門(使い方)

公式ページのExamples

debug (pdb)

python -m pdb test.py

p,list,b,s,n,up,down,r(etern),until,where,c(ontinue),disable,enable は使える

finish は使えない

info breakpoint ではなく、単に「b」で現在のbreakpointの設定情報を表示

breakpoint の条件指定は、「b ファイル:行番号, 条件」

「args」 で現在の関数の引数一覧

「ignore bp番号 回数」で、その回数だけbpを無視(c 回数 ではない)

参考) http://www.sakito.com/2012/10/python-debuggerpdb.html

参考)http://lightson.dip.jp/zope/ZWiki/211Python_e3_82_b9_e3_82_af_e3_83_aa_e3_83_97_e3_83_88_e3_82_92_e3_83_87_e3_83_90_e3_83_83_e3_82_b0_e3_81_99_e3_82_8b

参考) pythonのデバッガを任意のタイミングで呼び出す

conditional breakpoints

(Pdb) b 66, i>10

もしくは

(Pdb) b 66
Breakpoint 1 at /home/nagai/python/test/t1.py:66
(Pdb) condition 1 i>10

参考)http://stackoverflow.com/questions/14139817/python-in-pdb-is-it-possible-to-enable-a-breakpoint-only-after-n-hit-counts

DataFrame

10分でPandasを学ぶ

pandasのDataFrameの概要と生成方法

DataFrameの連結

"_" の役割

【備忘録】Pythonにおけるアンダースコア"_"の役割について

csv

#coding:utf-8

import csv   #csvモジュールをインポートする

f = open('data.csv', 'rb')
dataReader = csv.reader(f)

for row in dataReader:
  print row

#実行結果
['1','11','111','1111','11111']
['2','22','222','2222','22222']
['3','33','333','3333','33333']
['4','44','444','4444','44444']

http://peaceandhilightandpython.hatenablog.com/entry/2013/12/04/093359

NumPy

NumPyの型

NumPyで可能な数値計算

Pythonの数値計算ライブラリ NumPy入門

>>> import numpy as np
>>> a=np.zeros(4, dtype=np.float)
>>> a
array([ 0.,  0.,  0.,  0.])
>>> a[0]=0
>>> a[1]=1
>>> a[2]=2
>>> a[3]=3
>>> a
array([ 0.,  1.,  2.,  3.])
>>> a[1:4] = a[0:3]
>>> a
array([ 0.,  0.,  1.,  2.])

>>> b=np.zeros((3,4), dtype=np.float)

>>> b[0,:] = a
>>> b[1,:] = a*2
>>> b[2,:] = a*3
>>> b
array([[ 0.,  0.,  1.,  2.],
       [ 0.,  0.,  2.,  4.],
       [ 0.,  0.,  3.,  6.]])
>>> b[1:3,:]
array([[ 0.,  0.,  2.,  4.],
       [ 0.,  0.,  3.,  6.]])
>>> b[1:3,:] = b[0:2,:]
>>> b
array([[ 0.,  0.,  1.,  2.],
       [ 0.,  0.,  1.,  2.],
       [ 0.,  0.,  2.,  4.]])

>>> np.append(b, [[1.0,2.0,3.0,4.0]], axis=0)
array([[ 0.,  0.,  1.,  2.],
       [ 0.,  0.,  1.,  2.],
       [ 0.,  0.,  2.,  4.],
       [ 1.,  2.,  3.,  4.]])
>>> np.insert(b, 0, [[1.0,2.0,3.0,4.0]], axis=0)
array([[ 1.,  2.,  3.,  4.],
       [ 0.,  0.,  1.,  2.],
       [ 0.,  0.,  1.,  2.],
       [ 0.,  0.,  2.,  4.]])
>>> np.zeros((2,3))
array([[ 0.,  0.,  0.],
       [ 0.,  0.,  0.]])
>>> np.empty((2,3))
array([[  0.00000000e+000,   0.00000000e+000,   0.00000000e+000],
       [  0.00000000e+000,   3.18442449e-314,   1.63041663e-322]])

今年覚えたnumpyの関数

r_, c_

bmat

vsplit, hsplit

vectorize

mupltiply

linalg.matrix_power

asscalar

is_busday

piecewise

numpy tips

matplotlib (2次元の図の描画)

基本的な使い方

使える色一覧

rcParamsの設定項目とその内容一覧

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import matplotlib.pyplot as plt

plt.plot([1,2,3,4])
plt.ylabel(u'数値', fontdict={'family': 'TakaoGothic'})
plt.xlabel(unicode('入力','utf-8'), fontdict={'family': 'TakaoGothic'})
plt.text(1.5, 3.0, u'煮本語', fontdict={'family': 'TakaoGothic'})
plt.show()

要は、fontdict()で日本語対応のフォントを指定する。 また、日本語の文字列は即値の場合は u を頭に付ける。 即値でない場合はunicode()関数で変換する。

フォント一覧を表示させるには、下記プログラムを実行

#!/usr/bin/env python
# -*- coding: utf-8 -*-
 
import matplotlib.font_manager as fm
import pandas as pd

# フォントの一覧
fonts = fm.findSystemFonts()
# len(fonts) => 100以上はあるはず

# データフレームへの詰め込み
l = []
for f in fonts:
    font = fm.FontProperties(fname=f)
    l.append((f, font.get_name(), font.get_family()))
df = pd.DataFrame(l, columns=['path', 'name', 'family'])

#print('{}'.format(df))
#print('{}'.format(df['name']))

for i, name in enumerate(df['name']):
    print('{} {}'.format(i, name))

参考)matplotlib と Seaborn の軸の日本語設定

参考)【Seaborn】日本語を表示する (フォントを変更する)

pip

pipの使い方

install

$ sudo pip install <package>
$ sudo pip install -r requirements.txt
$ sudo pip uninstall <package>

一覧の表示

$ pip list
-o
   更新可能なパッケージを表示
-u
   最新バージョンが入っているパッケージを表示

検索

$ pip search <package>

パッケージの詳細

$ pip show <package>

pyenv

$ sudo apt-get install libreadline-dev libbz2-dev libsqlite3-dev libssl-dev
$ git clone https://github.com/yyuu/pyenv.git ~/.pyenv

vi ~/.bash_profileで下記を追加(今回は新規作成)

export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"
$ source ~/.bash_profile

扱えるpythonとライブラリのバージョンの一覧

$ pyenv install --list
$ pyenv install 2.7.13
$ pyenv install 3.4.7

pyenv管理下に登録されたpythonのバージョンの確認

$ pyenv versions
* system (set by ...)
  2.7.13
  3.4.7

実際に切り替える

$ pyenv global 3.4.7
$ pyenv local 3.4.7
$ pyenv shell 3.4.7
$ python --version

結局、切り替えが不十分で、その解消法も分からず、使用中止

参考)http://qiita.com/koooooo/items/b21d87ffe2b56d0c589b

参考)http://www.python-izm.com/contents/basis/pyenv.shtml

python3

$ sudo apt-get install python3
$ sudo apt-get install python3-pip
$ sudo pip3 install numpy
$ sudo apt-get install liblapack3

インストール済みパッケージ一覧の表示

$ pip3 list

opencv on python3

https://www.continuum.io/downloads#linux からAnacondaインストーラをダウンロード

$ bash Anaconda3-4.4.0-Linux-x86_64.sh

いろいろ聞かれるが適当に答える。ライセンスに同意し、インストール先に同意し、PATHの修正にも同意した。

$ conda -V

でバージョン番号が表示されれば、まず成功

仮想環境py36を作る

$ conda create -n py36 python=3.6 anaconda

現在の環境を調べる

$ conda info -e
# conda environments:
#
py36               /home/****/anaconda3/envs/py36
root            *  /home/****/anaconda3

仮想環境py36に移る

$ source activate py36

確認するには

$ conda info -e

pythonのバージョンを確認

$ python -V
Python 3.6.1 :: Anaconda 4.4.0 (64-bit)
$ python3 -V
Python 3.6.1 :: Anaconda 4.4.0 (64-bit)

OpenCV3をインストール

$ conda install -c https://conda.anaconda.org/menpo opencv3

インストールできたことを確認

$ python -c "import cv2; print(cv2.__version__)"
3.1.0

使えるパッケージ一覧

$ conda list

仮想環境py36から抜ける

$ source deactivate py36

参考)http://qiita.com/sugurunatsuno/items/ce3c0d486bdc93688192

参考)http://qiita.com/t2y/items/2a3eb58103e85d8064b6

その他Tips

Pythonを書き始める前に見るべきTips


添付ファイル: filetest12.py 19件 [詳細] filetest12.cc 20件 [詳細] filetest2.py 18件 [詳細] filetest2.cc 21件 [詳細]

トップ   差分 バックアップ リロード   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2017-08-22 (火) 03:08:15 (34d)