メッシュグリッド
# Python
a, b = np.meshgrid([1,2,3], [4, 5, 6, 7])
a
# array([[1, 2, 3],
# [1, 2, 3],
# [1, 2, 3],
# [1, 2, 3]])
b
# array([[4, 4, 4],
# [5, 5, 5],
# [6, 6, 6],
# [7, 7, 7]])
# R
x = matrix(0, 4, 3)
col(x) # 列番号を要素とする行列
# [,1] [,2] [,3]
# [1,] 1 2 3
# [2,] 1 2 3
# [3,] 1 2 3
# [4,] 1 2 3
#
row(x) # 行番号を要素とする行列
# [,1] [,2] [,3]
# [1,] 1 1 1
# [2,] 2 2 2
# [3,] 3 3 3
# [4,] 4 4 4
#
row(x)+3 # 加工すればよい
# [,1] [,2] [,3]
# [1,] 4 4 4
# [2,] 5 5 5
# [3,] 6 6 6
# [4,] 7 7 7
# Julia
function meshgrid(x, y)
nr = length(y)
nc = length(x)
transpose(reshape(repeat(x, nr), nc, :)), reshape(repeat(y, nr), nr, :)
end
a, b = meshgrid([1,2,3], [4, 5, 6, 7])
# a : [1 2 3; 1 2 3; 1 2 3; 1 2 3]
# b : [4 4 4 4; 5 5 5 5; 6 6 6 6; 7 7 7 7]
配列の連結
# Python
a = np.array([1.0, 2.0, 3.0]) # [ 1. 2. 3.]
b = np.array([5.0, 6.0, 7.0]) # [ 5. 6. 7.]
np.vstack((a, b)) # [[ 1., 2., 3.], # np でも同じ
# [ 5., 6., 7.]]
np.hstack((a, b)) # [ 1., 2., 3., 5., 6., 7.]
#
x = np.array([[1, 2, 3], [4, 5, 6]])
y = np.array([[10, 11, 12], [20, 21, 22]])
np.vstack((x, y)) # [[ 1, 2, 3], # rbind
# [ 4, 5, 6],
# [10, 11, 12],
# [20, 21, 22]]
np.hstack((x, y)) # [[ 1, 2, 3, 10, 11, 12], # cbind
# [ 4, 5, 6, 20, 21, 22]]
#
np.concatenate((a, b)) # [ 1., 2., 3., 5., 6., 7.]
np.concatenate(([a], [b])) # [[ 1., 2., 3.],
# [ 5., 6., 7.]]
#
np.concatenate((x, y), axis=0) # [[ 1, 2, 3],
# [ 4, 5, 6],
# [10, 11, 12],
# [20, 21, 22]]
np.concatenate((x, y), axis=1) # [[ 1, 2, 3, 10, 11, 12],
# [ 4, 5, 6, 20, 21, 22]]
#
np.c_[a, b] # [[ 1., 5.], R: cbind()
# [ 2., 6.],
# [ 3., 7.]]
np.r_[a, b] # [ 1., 2., 3., 5., 6., 7.] R: rbind()
#
np.c_[x, y] # [[ 1, 2, 3, 10, 11, 12],
# [ 4, 5, 6, 20, 21, 22]]
np.r_[x, y] # [[ 1, 2, 3],
# [ 4, 5, 6],
# [10, 11, 12],
# [20, 21, 22]]
# R
a = c(1, 2, 3)
b = c(5, 6, 7)
x = matrix(1:6, ncol=3, byrow=TRUE)
y = matrix(c(10, 11, 12, 20, 21, 22), ncol=3, byrow=TRUE)
rbind(a, b)
cbind(a, b) # np.c_ に相当
c(a, b)
append(a, b)
rbind(x, y)
cbind(x, y)
# Julia
a = [1, 2, 3]
b = [5, 6, 7]
x = [1 2 3; 4 5 6]
y = [10 11 12; 20 21 22]
vcat(a, b) # [1, 2, 3, 4, 5, 6]
hcat(a, b) # [1 5; 2 6; 3 7]
vcat(x, y)
# 1 2 3
# 4 5 6
# 10 11 12
# 20 21 22
hcat(x, y)
# 1 2 3 10 11 12
# 4 5 6 20 21 22