我的问题可能很简单,但我是数学初学者。
我有一个数据集,让我们说:
列其他标志。
{{1,2,3,4,5,6,7,8,9,10},{d,T,4,/,G,T,W,O,P,M},{克,H,J,K,L,S,d,E,W,q}}
现在我想提取列1提供奇数的所有行。换句话说,我想创建一个新的数据集。
我尝试使用Select
和OddQ
以及IF功能,但我完全不知道如何以正确的方式下订单!
答案 0 :(得分:0)
抓住你可能会问的东西..
(table = {{1, 2, 3, 4, 5, 6, 7, 8, 9, 10} ,
Characters["abcdefghij"],
Characters["ABCDEFGHIJ"]}) // MatrixForm
table[[All, 1 ;; -1 ;; 2]] // MatrixForm
或者也许这样:
Select[table, OddQ[#[[1]]] &]
{{1,2,3,4,5,6,7,8,9,10}}
答案 1 :(得分:0)
Mathematica中的约定与您在描述中使用的内容相反。 行是第一级子列表。
让我们拿原始数据
mytable = {{1,2,3,4,5,6,7,8,9,10},{d,t,4,"/",g,t,w,o,p,m},{g,h,j,k,l,s,d,e,w,q}}
正如你的建议,Select和OddQ可以做你想要的,但在你的桌子上,换位。所以我们先转换回来:
Transpose[Select[Transpose[mytable], OddQ[First[#]]& ]]
另一种方式:
Mathematica功能命令MapThread
可以在同步列表上工作。
DeleteCases[MapThread[If[OddQ[#1], {##}] &, mytable], Null]
MapThread的内部功能可以获得所谓的“行”的所有元素。作为变量(#1,#2等)。因此,如果测试失败,它将测试第一列并输出所有列或Null。封闭的DeleteCases抑制了不匹配的"行"。