python中2D数组的求和部分
我有一个二维数组。在操作数组的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之间。我卡住了。请帮忙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
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