5 回答

TA貢獻1833條經驗 獲得超4個贊
我們可以y使用zip和進行過濾list comprehension。
np.array([v for i, v in zip(x, y) if i in [20, 25, 30]])
#array([0.46052632, 0.5 , 0.53947368])
大熊貓的替代品。
import pandas as pd
pd.Series(index=x, data=y).loc[[20, 25, 30]].values

TA貢獻1850條經驗 獲得超11個贊
numpy.searchsorted可以做的工作:
idx = np.searchsorted(x,[20,25,30])
part = y[idx]
請注意,x必須進行排序。如果x沒有排序嘗試:
idx_sort = np.argsort(x)
xsorted = x[idx_sort]
ysorted = y[idx_sort]
idx = np.searchsorted(xsorted, [20,25,30])
part = y[idx]

TA貢獻1874條經驗 獲得超12個贊
另一種使用numpy.any創建布爾掩碼的方法:
import numpy as np
x = np.array([0, 5, 10, 15, 20, 25, 30])
y = np.array([0, 0.13157895, 0.31578947, 0.40789474, 0.46052632, 0.5, 0.53947368])
values = [20,25,30]
m = np.any([x==v for v in values], axis=0)
y[m]
array([0.46052632, 0.5 , 0.53947368])

TA貢獻1842條經驗 獲得超13個贊
此代碼將執行此操作:
import numpy as np
ind = [np.where(x == num)[0] for num in [20, 25, 30]]
corresponding = y[ind]
我相信沒有必要解釋,但如果你需要什么,請評論

TA貢獻1796條經驗 獲得超4個贊
不是用 numpy 而是用 dict:
import numpy as np
x = np.array([0, 5, 10, 15, 20, 25, 30])
y = np.array([0, 0.13157895, 0.31578947, 0.40789474, 0.46052632, 0.5, 0.53947368])
xy_dict = {}
for j, k in zip(x, y):
xy_dict[j] = k
print(xy_dict)
添加回答
舉報