Arrays vergleichen, Sprungfunktion

mit matplotlib, NumPy, pandas, SciPy, SymPy und weiteren mathematischen Programmbibliotheken.
Antworten
Alois
User
Beiträge: 14
Registriert: Dienstag 13. Dezember 2016, 14:45

Dienstag 23. Januar 2018, 21:45

Hallo Forum,

ich habe einen Array (A(:,0)) mit einer konstanten Zahlenfolge (Zeit): z.B. 0 1 2 3 4 5 6 7
In der 1.Spalte des zweiten Arrays (B(:,0)) steht, wann sich die Variable in der zweiten Spalte des Arrays B(:,1) verändert hat z.B.
0 0
2.2 1
6.3 0

jetzt soll die 2.Spalte des Arrays B zum Array A übertragen werden. Im Bsp müsste der Array A dann lauten:
0 0
1 0
2 0
3 1
4 1
5 1
6 1
7 0

gibt es dazu einen Befehl?
wenn ich die zweite Spalte interpolieren würde, dann verwende ich folgende Syntax:

Code: Alles auswählen

Var = np.interp(A[:,0],B[:,0],B[:,1])
Wie lautet die Syntax ohne Interpolation?

Vielen Dank für Eure Unterstützung und entschuldigt die umständlichen Formulierungen.
Alois
Ubuntu 14.04 / 16.04
Alois
User
Beiträge: 14
Registriert: Dienstag 13. Dezember 2016, 14:45

Freitag 2. März 2018, 22:18

Habe das Problem auf folgende Weise gelöst:

Code: Alles auswählen

# -*- coding: utf-8 -*-
"""
Created on Thu Jan 25 11:01:59 2018

@author: dodi
"""
import numpy as np

A = np.arange(12).reshape((12,1))
AA = np.zeros((12,1))
A = np.concatenate((A,AA),axis=1)
B = np.array([[0,0],
              [2.2,1],
              [6.3,0],
              [8.3,1]])
print "A:", A
print "B:", B

i=0
j=0
while i < len(B):
    if A[j,0]<B[i,0]:
        while A[j,0]<B[i,0]:   
            A[j,1]=B[i,1]*(-1)+1
            print "i=",i,"; j=",j, " A[j,0]=", A[j,0], " B[i,0]=",B[i,0]
            j+=1
    elif A[j,0]==B[i,0]:        
        A[j,1]=B[i,1]
        print "i=",i,"; j=",j, " A[j,0]=", A[j,0], " B[i,0]=",B[i,0]
        j+=1
    else: #A[j,0]>B[i,0]
        A[j,1]=B[i-1,1]
        print "i=",i,"; j=",j, " A[j,0]=", A[j,0], " B[i,0]=",B[i,0]
        j+=1
    i+=1 
i = i-1
while j < len(A):     
    A[j,1]=B[i,1]    
    print "i=",i,"; j=",j, " A[j,0]=", A[j,0], " B[i,0]=",B[i,0]
    j+=1
    
print A
wenn jemand Verbesserungsvorschläge hat, dann gerne her damit...

Viele Grüße
Alois
Ubuntu 14.04 / 16.04
Antworten