Hogyan juthat tömb hozzáadása után számos konkrét adatokat a tömbben?

szavazat
1
import numpy as np 
import xlrd
import xlwt

wb = xlrd.open_workbook('Scatter plot.xlsx')
workbook = xlwt.Workbook() 

sheet = workbook.add_sheet(Sheet1)

sh1 = wb.sheet_by_name('T180')
sh2=wb.sheet_by_name(T181)

x= np.array([sh1.col_values(1, start_rowx=51, end_rowx=315)])
y= np.array([sh1.col_values(2, start_rowx=51, end_rowx=315)])

x1= np.array([sh2.col_values(1, start_rowx=50, end_rowx=298)])
y1= np.array([sh2.col_values(2, start_rowx=50, end_rowx=298)])

condition = [(x1<=1000) & (x1>=0) ]
condition1 = [(y1<=1000) & (y1>=0) ]

x_prime=x1[condition]-150
y_prime= y[condition1]+20

plt.plot(x,y, ro, label=T180)
plt.plot(x_prime,y_prime,gs)
plt.show()

Azt kivonni kívánt 150 értékek közül kevesebb, mint 1000 x1 tömb és végül azt kell az összes érték (levonva + maradék). De ez a kód én csak azokat az értékeket, amelyek kevesebb, mint 1000. De szükség van mind (kevesebb, mint 1000 + 1000-nél nagyobb). De 1000-nél nagyobb érték változatlan marad. Hogyan fogja ezt. Mint látható, van 248 elem x1 tömb így kivonása után azt kell 248 elem x_prime . Ugyanaz, mint a y. Előre is köszönöm a kedves együttműködést.

A kérdést 22/09/2016 07:25
felhasználó
Más nyelveken...                            


3 válasz

szavazat
1

Használhatja numpy.placemódosítani tömbök, ahol a logika kifejezést tartja. Az összetett logikai kifejezések a tömb vannak a logikai funkciók , amely egyesíti a logikai tömbök.

Például:

A = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
np.place(A, np.logical_and(A > 1, A <= 8), A-10)

elvesz 10minden eleme A, hogy > 1és <= 8. Ezt követően Alesz

array([ 1, -9, -8, -7, -6, -5, -4, -3,  9, 10])
Válaszolt 22/09/2016 08:25
a forrás felhasználó

szavazat
0
import numpy as np 
#random initialization
x1=np.random.randint(1,high=3000, size=10)

x_prime=x1.tolist()

for i in range(len(x_prime)):
    if(x_prime[i]<=1000 and x_prime[i]>=0): 
        x_prime[i]=x_prime[i]-150

x_prime=np.asarray(x_prime)  

Válasz:

x1
Out[151]: array([2285, 2243, 1716,  632, 2489, 2837, 2324, 2154,  562, 2508])

x_prime
Out[152]: array([2285, 2243, 1716,  482, 2489, 2837, 2324, 2154,  412, 2508])
Válaszolt 22/09/2016 08:38
a forrás felhasználó

szavazat
1

Itt van egy panda megoldás:

import matplotlib
import matplotlib.pyplot as plt
import pandas as pd

matplotlib.style.use('ggplot')

fn = r'/path/to/ExcelFile.xlsx'
sheetname = 'T181'
df = pd.read_excel(fn, sheetname=sheetname, skiprows=47, parse_cols='B:C').dropna(how='any')

# customize X-values
df.ix[df.eval('0 <= GrvX <= 1000'), 'GrvX'] -= 150
df.ix[df.eval('2500 < GrvX <= 3000'), 'GrvX'] += 50
df.ix[df.eval('3000 < GrvX'), 'GrvX'] += 30

# customize Y-values
df.ix[df.eval('0 <= GrvY <= 1000'), 'GrvX'] += 20

df.plot.scatter(x='GrvX', y='GrvY', marker='s', s=30, label=sheetname, figsize=(14,12))

plt.show()

írja kép leírása itt

Válaszolt 22/09/2016 16:43
a forrás felhasználó

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more