сопоставить векторы в матрице python - PullRequest
0 голосов
/ 04 августа 2020

Я новичок в python и программировании в целом.

Я хочу создать матрицу из 2 векторов, например, когда у меня есть a = [1, 2, 3] и b = [4, 5, 6] Я хочу получить матрицу, которая имеет те же строки, что и векторы, но векторы находятся в отдельных столбцах. m = [[1, 4], [2, 5], [3, 6]]

Я ищу способ, как это сделать, поскольку в моем коде есть более сложные векторы, чем в моем примере . Я хочу сделать то же самое для векторов вероятность_выигрыша и вероятность_выброса.

import numpy as np
p = np.arange(0, 1, 0.01, dtype = float)  


alpha = input("alpha = ") 
alpha = np.zeros((1, 100)) + alpha 

def w(alpha, p):
    return np.exp(-(-np.log(p))**alpha)

w = w(alpha, p)

def P(w):
    return np.exp(np.log2(w))
     
probability_of_winning = P(w)
probability_of_winning = np.round([probability_of_winning], decimals=2) 
probability_of_winning_in_percent = probability_of_winning * 100

probability_of_losing = 1 - probability_of_winning
probability_of_losing_in_percent = probability_of_losing * 100

заранее большое спасибо

Ответы [ 3 ]

1 голос
/ 04 августа 2020

Здесь вы go:

import numpy as np


a = np.array([1, 2, 3])
b = np.array([4, 5, 6])

arr = np.empty((0, a.shape[0]-1), int)
for i in range(a.shape[0]):
    to_append = np.array([[a[i], b[i]]])
    arr = np.append(arr, to_append, axis=0)

Вывод:

[[1 4]
 [2 5]
 [3 6]]
1 голос
/ 04 августа 2020

Просто стиль pythoni c и numpy, не требующий любых циклов, добавления или других дорогостоящих операций:

a = np.array([1, 2, 3])
b = np.array([4, 5, 6])

np.vstack((a, b)).T

Также работает для смешанных типов и большого количества векторы, fi a и b, являющиеся np.arrays и c, и d, являющиеся python list s:

a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
c = [13, 21, 12]
d = [19, 33, 77]
# add all to a tuple
arrays = (a, b, c, d)
# and stack
np.vstack(arrays).T

Вместо np.vstack(arrays).T более общий np.stack(arrays, axis=1) также можно использовать.

1 голос
/ 04 августа 2020
a = [1, 2, 3]
b = [4, 5, 6]
c = [7, 8, 9]
d = [10, 11, 12]

def horizontal_matrices(*args):
    res = []
    for i in range(len(args[0])):
        col = []
        for j in args:
            col.append(j[i])
        res.append(col)
    return res


print(horizontal_matrices(a, b, c, d))
# [[1, 4, 7, 10], [2, 5, 8, 11], [3, 6, 9, 12]]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...