python中2D数组的求和部分

python中2D数组的求和部分,python,arrays,function,numpy,append,Python,Arrays,Function,Numpy,Append,我有一个二维数组。在操作数组的x列之后,我创建了一个新的2D数组(data2),对x列进行了新的更改(y列保持不变)。现在,我只想在data2中的y值数组的x值大于3或小于5时,将其附加到新数组中。例如,如果2D数组是([2,3]、[4,5]、[3.5,6]、[9,7]),我只希望在新数组中使用y值5和6,因为它们的x值介于3和5之间。我卡住了。请帮忙 import numpy as np import matplotlib.pyplot as plt data = np.loadtxt('b

我有一个二维数组。在操作数组的x列之后,我创建了一个新的2D数组(data2),对x列进行了新的更改(y列保持不变)。现在,我只想在data2中的y值数组的x值大于3或小于5时,将其附加到新数组中。例如,如果2D数组是([2,3]、[4,5]、[3.5,6]、[9,7]),我只希望在新数组中使用y值5和6,因为它们的x值介于3和5之间。我卡住了。请帮忙

import numpy as np
import matplotlib.pyplot as plt

data = np.loadtxt('blah.txt') #blah.txt is a 2d array

c = (3*10)^8

x = c /((data[:,0])*10)

y = data[:,1]


data2 = np.array((x,y)).T

def new_yarray(data2):

    yarray =[]

    if data2[:,0] <= 5 or data2[:,0] >= 3:

        np.append(data2[:,1])

    print yarray

    return yarray
将numpy导入为np
将matplotlib.pyplot作为plt导入
data=np.loadtxt('blah.txt')#blah.txt是一个二维数组
c=(3*10)^8
x=c/((数据[:,0])*10)
y=数据[:,1]
data2=np.array((x,y)).T
def new_yarray(数据2):
雅雷=[]
如果数据2[:,0]=3:
np.append(数据2[:,1])
印花雅雷
返回雅雷

为了清晰起见,这里有一个分为几个步骤的一行解决方案

给定一个数组

>>> a
array([[ 2. ,  3. ],
       [ 4. ,  5. ],
       [ 3.5,  6. ],
       [ 9. ,  7. ]])
使用
np.where()
,可以找到
x
值大于3小于5的元素索引:


您可以使用此函数展平列表,然后根据需要附加值

def flatten_list(a, result=None):
    """ Flattens a nested list. """
    if result is None:
        result = []

    for x in a:
        if isinstance(x, list):
            flatten_list(x, result)
        else:
            result.append(x)
    return result

lst = ([2,3], [4,5], [3.5,6], [9,7])

lst = flatten_list(lst)

new_lst = []
for i in lst:
    if (float(i) > 3 and float(i) < 5):
        new_lst.append(i)
print new_lst
def展平列表(a,结果=无):
“”“展平嵌套列表。”“”
如果结果为无:
结果=[]
对于a中的x:
如果isinstance(x,列表):
展平列表(x,结果)
其他:
结果追加(x)
返回结果
lst=([2,3],[4,5],[3.5,6],[9,7])
lst=展平列表(lst)
新的_lst=[]
对于lst中的i:
如果(浮动(i)>3且浮动(i)<5):
新增附加(一)
打印新文件

在这种情况下,只有3.5和4大于3小于5…

那么您是否找到了问题的解决方案?
>>> a[np.where(np.logical_and(a[:,0] > 3,a[:,0] < 5))][:,1]
array([ 5.,  6.])
def flatten_list(a, result=None):
    """ Flattens a nested list. """
    if result is None:
        result = []

    for x in a:
        if isinstance(x, list):
            flatten_list(x, result)
        else:
            result.append(x)
    return result

lst = ([2,3], [4,5], [3.5,6], [9,7])

lst = flatten_list(lst)

new_lst = []
for i in lst:
    if (float(i) > 3 and float(i) < 5):
        new_lst.append(i)
print new_lst