簡體   English   中英

將 numpy 數組中的單個值提取到列表中

[英]Extract individual values from numpy array into a list

我正在嘗試從 numpy 數組中提取值並將各個條目放入列表中。

例如,如果我有以下列表:

import numpy as np
x = 1
problem_variable = np.array(['a', 'b'], dtype='<U9')
z = 2
mylist = [x, problem_variable , z]
# [1, array(['a', 'b'], dtype='<U9'), 2]

我如何得到結果

[1, 'a', 'b', 2]

我事先不知道problem_variable的長度,所以不能硬編碼problem_variable[0]problem_variable[1]等。

以下是我想要的,但我確信我缺少將數組分開的適當方法。 謝謝。

result = []
result.append(x)
for i in problem_variable: result.append(i)
result.append(z)

你可以解壓你的數組:

mylist = [x, *problem_variable , z]

由於您使用的是numpy :您可以使用np.r_沿第一個軸連接輸入對象:

np.r_[x, problem_variable, z]
# array(['1', 'a', 'b', '2'], dtype='<U9')

在較大的列表上比較性能:

problem_var = np.concatenate([problem_variable]*10000, axis=0)

%timeit np.r_[x, problem_var, z]
# 143 µs ± 19.6 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)

%timeit np.hstack((x, problem_var , z))
# 553 µs ± 55.5 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

%timeit [x, *problem_var.tolist() , z]
# 502 µs ± 42.6 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

%timeit [x, *problem_var , z]
# 6.46 ms ± 215 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)

您可以使用np.hstack ,它可以水平順序堆疊數組,

np.hstack((x, problem_variable , z))

# ['1' 'a' 'b' '2']

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM